Асинхронность без многопоточности - 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();
        }
    }
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 4.2 из 5
Похожие ответы