2016-11-28 2 views
1

Я слышал, что ожидание - это асинхронная операция. Но так как это важная концепция, почему я не могу найти точное определение в MSDN?Что ждет?

Мой вопрос заключается не в том, как писать async/await. Мой вопрос - знать концепцию. MSDN имеет концепцию async/await, но нет awaitable.

Итак, что же ждет? Если это операция, что включено?

+1

https://msdn.microsoft.com/en-us/library/hh191443(v=vs.110).aspx – ColinM

+0

Возможный дубликат [Как и когда использовать \ ' async \ 'и \' ждать \ '] (http://stackoverflow.com/questions/14455293/how-and-when-to-use-async-and-await) – Igor

+1

У него нет слова' awaitable' в статье. – Bigeyes

ответ

1

Наконец я нашел его на Async/Await FAQ.

An «awaitable» любого типа, который предоставляет метод GetAwaiter который возвращает действительный «awaiter». Этот метод GetAwaiter может быть методом экземпляра (как в случае задачи и задачи), либо может быть методом расширения.

«awaiter» - это любой тип, возвращаемый с помощью метода GetAwaiter от awaitable, и который соответствует определенному шаблону. Аутентификатор должен реализовать интерфейс System.Runtime.CompilerServices.INotifyCompletion и, возможно, реализовать интерфейс System.Runtime.CompilerServices.ICriticalNotifyCompletion. В дополнение к реализации метода OnCompleted, который поступает из INotifyCompletion (и, необязательно, метода UnsafeOnCompleted, который поступает из ICriticalNotifyCompletion), awaiter должен также предоставлять свойство IsCompleted Boolean, а также метод без параметров GetResult. GetResult возвращает void, если awaitable представляет операцию возврата void или возвращает TResult, если awaitable представляет операцию возврата TResult.

И это link about awaitable and awaiter is helpful.

0

Проще говоря, ожидаемый метод или функция - это функция, которая возвращает Task или Task<T>. Он не возвращает тип данных, вместо этого он возвращает процесс, который асинхронен с тем, который выполняется в этот момент времени. Если у вас было два процесса, A и B и B разрешались запускать только после того, как A был закончен, B был бы ожидаемым методом, потому что он подождал бы, когда A будет закончен, и только тогда он вернет назначенную задачу. Обратите внимание, что ожидаемый процесс также может вернуть void. Это не самые ясные объяснения, но определенно помог мне, когда я учился.

+0

По комментарию Evk4. Ожидается класс. Вы так считаете? – Bigeyes

Смежные вопросы