Я полностью новичок в С# 5 новых async
/await
ключевых словах, и меня интересует лучший способ реализации события прогресса.
Теперь я бы предпочел, чтобы событие Progress
находилось в самой Task<>
. Я знаю, что могу просто поместить событие в класс, содержащий асинхронный метод, и передать какой-либо объект состояния в обработчик события, но для меня это похоже на обходное решение, чем решение. Мне также могут потребоваться различные задачи, чтобы отключить обработчики событий в разных объектах, что звучит беспорядочно таким образом.
Есть ли способ сделать что-то похожее на следующее:
var task = scanner.PerformScanAsync();
task.ProgressUpdate += scanner_ProgressUpdate;
return await task;