c# Task не запускается из библиотеки
В библиотеки dll есть класс с асинхронным методом.
public class FlowCheck
{
public static void Run()
{
// Код
}
public static async void RunAsync()
{
await Task.Run(() => FlowCheck.Run());
}
}
В программе пытаюсь запустить его, но программа сразу завершает свою работу.
public class Program
{
FlowCheck.RunAsync();
}
При этом если, я переносу класс из dll в программу, все работает отлично. Я только начал работать с Task, подскажите что я делаю не так, на Гугл нашел подобное, но там либо синхронное выполнение, либо не получается разобраться. Заранее благодарю за помощь!
Ответы (1 шт):
Автор решения: aepot
→ Ссылка
async void невозможно ожидать, не используйте async void, это плохая практика.
public class FlowCheck
{
public static void Run()
{
// Код
}
public static async Task RunAsync()
{
await Task.Run(() => Run());
}
}
public class Program
{
static async Task Main(string[] args)
{
await FlowCheck.RunAsync();
}
}
Или даже так
static async Task Main(string[] args)
{
Task task = FlowCheck.RunAsync();
Console.WriteLine("Запущено.");
await task;
Console.WriteLine("Закончилось.");
}