2015-07-17 2 views
0

У меня есть класс менеджера, который запускает задачу для завершения длительной операции. Я хотел бы иметь возможность вызвать метод в классе менеджера для уведомления слушателей через событие состояния, ошибки и т. Д.Поднять событие из задачи

При использовании подхода, отличного от задачи, это легко.

Как мне вызвать метод или поднять событие из класса менеджера из задачи?

Заранее спасибо.

+0

Вы ищете способ для тех, кто имеет экземпляр «Задачи», чтобы слушать эти события? Потому что вы можете просто поднимать события из задач, как правило, и каждый, кто их слушает, должен быть уведомлен. –

+0

Интерфейс 'IProgress ' и 'Progress ' реализация уже делает то, что вы просите, и даже поднимаете событие для каждого уведомления –

ответ

0

Я бы определил интерфейс, который вам нужно передать этому классу менеджера, а затем передать его в задание с помощью параметра метода.

Для уведомлений об ошибках, бросающих исключение будет достаточно до тех пор, как это наблюдается исключение на задачи с помощью await, Task.Wait(), Task.Result или Task.Exception

Если уведомление прогресса есть уже [IProgress<T>][1] интерфейс можно использовать.

Но для любого пользовательского уведомления к классу менеджера я бы добавил соответствующий интерфейс и реализовал его в классе менеджера.

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