Ця стаття є дзеркальною статтею машинного перекладу, будь ласка, натисніть тут, щоб перейти до оригінальної статті.

Вид: 31433|Відповідь: 5

[Джерело] .net/c# Клас завдань з async/await

[Копіювати посилання]
Опубліковано 20.10.2017 22:32:17 | | |
Клас завдання

Клас Завдання — це асинхронна абстракція операцій, надана після .NET 4.0, з повним шляхом до System.Threading.Tasks.Task.

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

<TResult>Основні конструктори класу Завдання/Завдання такі:


Після створення завдання можна запустити за допомогою методу Start():


У фактичній розробці статичний метод Run() класу завдань або метод StartNew() класу TaskFactory частіше використовуються для створення та запуску нових завдань.

Деякі поширені методи класу Завдання:


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

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

Async використовується для позначення асинхронних методів:
Асинхронне ключове слово є контекстуальним ключовим словом і розглядається як ключове слово лише при зміні методу та Лямбда, а також як ідентифікатор в інших сферах.
Асинхронне ключове слово може позначати статичні методи, але не точки входу (методи Main()).
Повернене значення методу, позначеного async, має бути <TResult>значенням Завдання, Завдання або порожнеча.
Await використовується для очікування результату асинхронного методу:
Ключове слово await також є контекстуальним і вважається ключовим словом лише в асинхронному методі з тегами.
Ключове слово await можна використати перед асинхронним методом і Task і <TResult>Task для очікування завершення виконання асинхронного завдання.
Проста асинхронна структура методу виглядає так:
Метод не позначається асинхронним ключовим словом, це асинхронний метод, і оператори, які з'являються безпосередньо всередині асинхронного методу, також виконуються синхронноКонтент, виконаний асинхронно, має виконуватися за допомогою класу Завдання
Насправді, асинхронний метод, який не містить жодних операторів очікування, буде виконаний синхронно, після чого компілятор видасть попередження.

Простий приклад, використання async/await для одночасного виводу контенту на екрані:

Вихід: (Mono 4.4.0 та ArchLinux x64)

З наведеної вище програми неважко побачити, що в асинхронному методі асинхронного ключового слова з тегами код до використання await виконується синхронно, а після виклику await решта коду виконується асинхронно в окремому потоці.





Попередній:fsadf{:1_2:}
Наступний:RestSharp a. Компонент допоміжного класу NET(C#) HTTP
Опубліковано 01.11.2017 19:57:12 |
Подивись, подивіться, подивіться
Опубліковано 29.01.2019 09:37:53 |
Я довго шукав на Baidu #async Task Invoke()Я опинився на ногахНаведений вище метод використовує async ключове слово для повернення методу Invoke класу Завдання, що також вирішує проблему потоку — що означає вся ця функція?
Опубліковано 29.01.2019 21:14:36 |
Це справді добре, і я напишу подібне повідомлення, коли матиму час
Опубліковано 15.02.2019 16:17:22 |
Вихідний результат не може чітко побачити ефект асинхронного виконання, тому асинхронний вхід має бути одночасним
Застереження:
Усе програмне забезпечення, програмні матеріали або статті, опубліковані Code Farmer Network, призначені лише для навчання та досліджень; Вищезазначений контент не повинен використовуватися в комерційних чи незаконних цілях, інакше користувачі несуть усі наслідки. Інформація на цьому сайті надходить з Інтернету, і спори щодо авторських прав не мають до цього сайту. Ви повинні повністю видалити вищезазначений контент зі свого комп'ютера протягом 24 годин після завантаження. Якщо вам подобається програма, будь ласка, підтримуйте справжнє програмне забезпечення, купуйте реєстрацію та отримайте кращі справжні послуги. Якщо є будь-яке порушення, будь ласка, зв'яжіться з нами електронною поштою.

Mail To:help@itsvse.com