Головна‎ > ‎C#‎ > ‎Додатково‎ > ‎

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