Асинхронность без многопоточности - C#
Формулировка задачи:
Несколько дней рою в эту тему. Уяснил что для исполнения асинхронного кода многопоточность не является обязательной, хоть и является важной частью использования асинхронности, в каком то смысле его частной реализацией. Или более точно асинхронное исполнение это действие которые может быть исполнено в не рамках текущего контекста, без блокирования текущего потока.
Теперь по с#. По какому тогда принципу работает await? Он дожидается ответа, исполняя действие в новом потоке? Вроде бы нет, именно в этом я не уверен. Может ли кто тогда привести код использование асинхронности без использования многопоточности.
Решение задачи: «Асинхронность без многопоточности»
textual
Листинг программы
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading; using System.Threading.Tasks; namespace ConsoleApplication6 { class Program { static void Main(string[] args) { //Тут запускается задача, а управление возвращается основному потоку var awaiter = Task.Run(() => { Thread.Sleep(2000); }).GetAwaiter(); awaiter.OnCompleted(() => { Console.WriteLine("Task ended!"); }); //Тут можно продолжать работу в основном потоке,пока задача не завершиться Console.WriteLine("Doing some work..."); Console.ReadLine(); } } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д