Posso usar o BeginInvoke com um MulticastDelegate?
Desejo gerar uma série de eventos da minha classe de biblioteca, mas estou preocupado que alguns assinantes sejam rudes e demorem muito tempo para processar alguns eventos, bloqueando assim o encadeamento que está gerando os eventos. Eu pensei que poderia proteger o segmento de elevação usando um segmento de pool de segmentos para aumentar cada evento:
if (packet != null && DataPacketReceived != null)
{
var args = new DataPacketEventArgs(packet);
DataPacketReceived.BeginInvoke(this, args, null, null);
}
Isso funciona bem quando há apenas um assinante no evento, mas assim que um segundo assinante chega,DataPacketReceived
se torna um delegado multicast e recebo uma exceção de argumento com a mensagem de erro "O delegado deve ter apenas um destino". Existe uma maneira fácil de aumentar o evento em um thread separado, ou eu tenho que iniciar um thread e depois aumentar o evento a partir daí?