Эта статья является зеркальной статьёй машинного перевода, пожалуйста, нажмите здесь, чтобы перейти к оригиналу.

Вид: 31433|Ответ: 5

[Источник] .net/c# Класс задачи с async/await

[Скопировать ссылку]
Опубликовано 20.10.2017 22:32:17 | | |
Класс задач

Класс Task — это асинхронная абстракция операций, предоставляемая после .NET 4.0, с полным путём к System.Threading.Tasks.Task.

Класс задачи используется для представления асинхронных операций без возвращаемого значения, а для асинхронных операций с возвращаемыми значениями следует использовать подкласс Задача класса задачи<TResult>.
Задачи, созданные классом Задача, добавляются в пул потоков.

<TResult>Основные конструкторы класса Задача/Задача следующие:


После создания задачу можно запустить с помощью метода Start():


В реальной разработке для создания и запуска новых задач чаще используются статический метод Run() класса задачи Task или элемент StartNew() заводского класса TaskFactory.

Некоторые распространённые методы в классе Задача:


async/await ключевое слово

C# 5.0 ввела ключевые слова async и await, что обеспечивало лучшую поддержку параллелизма на уровне языка.

Async используется для обозначения асинхронных методов:
Асинхронное ключевое слово является контекстным и рассматривается как ключевое слово только при модификации метода и Лямбда, а в других областях — как идентификатор.
Асинхронное ключевое слово может обозначать статические методы, но не точки входа (методы Main().
Возвращаемое значение метода, помеченного async, должно быть <TResult>равным Задача, Задача или void.
Await используется для ожидания результата асинхронного метода:
Ключевое слово await также является контекстным и считается ключевым словом только в асинхронном методе с тегами.
Ключевое слово await можно использовать до асинхронного метода и Task, и <TResult>Task, чтобы дождаться окончания выполнения асинхронной задачи.
Простая асинхронная структура метода выглядит следующим образом:
Дело не в том, что метод помечен ключевым словом async, это асинхронный метод, и операторы, находящиеся непосредственно внутри асинхронного метода, также выполняются синхронноКонтент, выполняемый асинхронно, должен выполняться с помощью класса Задача
Фактически, асинхронный метод, не содержащий операторов ожидания, будет выполняться синхронно, после чего компилятор выдаёт предупреждение.

Простой пример: использование async/await для одновременного вывода контента на экране:

Вывод: (Mono 4.4.0 и ArchLinux x64)

Из приведённой выше программы несложно заметить, что в асинхронном методе с тегом асинхронного ключа код до использования await выполняется синхронно, а после вызова waitit остальной код выполняется асинхронно в отдельном потоке.





Предыдущий:fsadf{:1_2:}
Следующий:RestSharp a. NET(C#) HTTP компонент класса помощника
Опубликовано 01.11.2017 19:57:12 |
Посмотри, посмотри, посмотри
Опубликовано 29.01.2019 9:37:53 |
Я долго искал на Baidu #async Task Invoke()Я оказался на ногахВышеуказанный метод использует ключевое слово async для возврата метода Вызова класса задачи, что также решает задачу потока — каково значение всей этой функции?
Опубликовано 29.01.2019 21:14:36 |
Это действительно хорошо, и я напишу подобное дело, когда у меня будет время
Опубликовано 15.02.2019 16:17:22 |
Выходной результат не может чётко увидеть эффект асинхронного выполнения, и асинхронный вход должен быть одновременно
Отказ:
Всё программное обеспечение, программные материалы или статьи, публикуемые Code Farmer Network, предназначены исключительно для учебных и исследовательских целей; Вышеуказанный контент не должен использоваться в коммерческих или незаконных целях, иначе пользователи несут все последствия. Информация на этом сайте взята из Интернета, и споры по авторским правам не имеют отношения к этому сайту. Вы должны полностью удалить вышеуказанный контент с компьютера в течение 24 часов после загрузки. Если вам нравится программа, пожалуйста, поддержите подлинное программное обеспечение, купите регистрацию и получите лучшие подлинные услуги. Если есть нарушение, пожалуйста, свяжитесь с нами по электронной почте.

Mail To:help@itsvse.com