За якими сценаріями ви хотіли б користуватися
public async Task AsyncMethod(int num)
замість
public async void AsyncMethod(int num)
Єдиний сценарій, про який я можу придумати, - це якщо вам потрібна задача, щоб мати можливість відстежувати її прогрес.
Крім того, в наступному методі чи не потрібні асинхронізація та очікування ключових слів?
public static async void AsyncMethod2(int num)
{
await Task.Factory.StartNew(() => Thread.Sleep(num));
}
Thread.Sleep
зі своїми завданнями, які ви повинні await Task.Delay(num)
замість цього
Task.Delay
не так, Task.AsyncDelay
як усі методи завдання - Async
async void
замість цього async Task
. Метод вийшов з ладу через те, що він використовував контекстний об'єкт Entity Framework, оголошений членом контролера, до того, як метод закінчився для виконання. Рамка розмістила контролер до того, як його метод закінчився виконувати. Я змінив метод на асинхронізацію Завдання, і він спрацював.
Foo()
став биFooAsync()
.