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("Закончилось.");
}

Асинхронное программирование.

→ Ссылка