async/await
Ці методи дозволяють винести блок коду з основного потоку, аби програма не зависала, поки очікуються данні, наприклад з БД чи великого файлу
1. Не можна використовувати ref, out
2. await-ів може бути кілька
3. Асинхронний метод може повертати void, Task
4. Наступні команди очікують на завершення await-методу
static void DoApart() // Асинхронне завдання
{
Thread.Sleep(4000);
Console.WriteLine("Finish");
}
static async void F1Async() // Асинхронний
{
Console.WriteLine("DoApart start");
await Task.Run(() => DoApart()); // Зачекати, Task.Run() - виклик асинхронної функції
Console.WriteLine("DoApart end");
}
static void Main(string[] args)
{
F1Async(); // запуск асинхронного методу в окремому потоці
Console.WriteLine("Головний потiк продовжує роботу!");
Console.Read();
}
DoApart start
Головний потiк продовжує роботу!
// через 5 с
Finish
DoApart end