#c# #asynchronous #task
#c# #асинхронный #задача
Вопрос:
У меня есть пользовательская операция, которая реализует GetAwaiter
метод, который возвращает пользовательский объект, который реализует INotifyCompletion
.
Task.WhenAll
поддерживаются только экземпляры Task
. Есть ли какой-нибудь способ обернуть задачу вокруг a INotifyCompletion
?
Редактировать: причина в том, что я хочу дождаться нескольких из них.
Комментарии:
1.
Is there any way to wrap a task around a INotifyCompletion
, да, но вы хотите обернуть все задачи в aINotifyCompletion
; в основном, когда все задачи выполнены, а затем уведомить?2. Нет. Я в принципе хочу иметь возможность смешивать и сопоставлять
INotifyCompletion
задачи и задачи вTask.WhenAll
вызове.3. Может быть, использовать
TaskCompletionSource
?
Ответ №1:
Отвечая на мой собственный вопрос. Я решил это, добавив следующий метод в свой класс, в котором есть GetAwaiter
метод.
public async Task GetTask() {
await this;
}
Тогда я могу позвонить Task.WhenAll(myCustomAwaitableObject.GetTask())
.