Eu tenho um único assembly C # encadeado (meu cliente)que assina vários eventos usando o mesmo manipulador de eventos (uma declaração curta de impressão). O emissor dos eventos (o servidor) é multitreaded e, portanto, pode disparar dois eventos simultaneamente no meu único cliente encadeado.
Como a plataforma .NET lida com isso? Isso enfileira os eventos? Ele descarta um evento que não pode ser processado porque o manipulador de eventos já está ocupado?
fundo
Eu pedi um pergunta anterior mas, a julgar pelo esclarecimento que eu precisava acrescentar, acho que poderia fazer um trabalho muito melhor abstraindo minha pergunta para torná-la mais geral e útil para os outros.
Respostas:
4 para resposta № 1Eventos em C # e .NET não sabem naturalmente sobre threads em absoluto. Eles são apenas uma camada extra de encapsulamento para os delegados, basicamente. Os manipuladores serão chamados em qualquer thread que o "gerador de eventos" escolher usar. poderia decide acionar cada manipulador de eventos em um thread separado ... ou pode usar um thread separado para chamadas todos manipuladores, um após o outro ... ou poderia fazer isso de forma síncrona dentro de seu próprio segmento "normal".