За якими сценаріями ви хотіли б користуватися
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().