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