Я хочу поднять ряд событий из моего библиотечного класса,но я беспокоюсь, что некоторые подписчики событий будут грубыми и потратят много времени на обработку некоторых событий, тем самым блокируя поток, который поднимает события. Я подумал, что смогу защитить поток поднятия, используя поток пула потоков для поднятия каждого события:
if (packet != null && DataPacketReceived != null)
{
var args = new DataPacketEventArgs(packet);
DataPacketReceived.BeginInvoke(this, args, null, null);
}
Это отлично работает, когда есть только один подписчик события, но как только приходит второй подписчик, DataPacketReceived
становится делегатом многоадресной рассылки, и я получаю исключение аргумента с сообщением об ошибке «Делегат должен иметь только один целевой объект». Есть ли простой способ поднять событие в отдельной теме, или мне нужно запустить тему, а затем поднять событие оттуда?