Создание событий, чтобы они обрабатывались в том же потоке, что и исходный подписчик. - PullRequest
2 голосов
/ 11 сентября 2010

В dotNET с C # 4.0, как я могу гарантировать, что событие, которое происходит в произвольном потоке X, будет вызывать обработчики в том же потоке (или контексте синхронизации), что и подписывающий поток A, B или C.

Я пытаюсь избежать необходимости вставлять связанный с потоками код в метод-обработчик или на сайт событий.

Было бы здорово, если бы мне не пришлось менять подписку + = и - =, а также "публичное событие EventHandler myevent;" Код.

Ответы [ 2 ]

1 голос
/ 11 сентября 2010

Я не думаю, что вы можете напрямую сделать это.Лучшее, что вы можете сделать, - это зарегистрировать обработчики, которые будут работать в каком-то произвольном потоке, но которые передадут данные в исходный поток.

0 голосов
/ 09 мая 2016

В настоящее время это можно сделать с TaskCompletionSource, в сочетании с поведением по умолчанию async / await, которое возвращает вещи в контекст синхронизации вызова.

...