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