我有一个单线程C#程序集(我的客户端),使用相同的事件处理程序(一个简短的打印语句)订阅多个事件。事件的发射器(服务器)是多线程的,因此可以在我的单线程客户端上模拟发送两个事件。
.NET平台如何处理这个问题?它是否将事件排队?它是否会丢弃因事件处理程序忙而无法处理的事件?
背景
我问了一个previous question,但从我需要补充的澄清来判断,我认为我可以更好地抽象我的问题,使其更普遍,更有用。
答案 0 :(得分:4)
C#和.NET中的事件自然不知道的所有线程。它们只是代表们的额外封装层,基本上。处理程序将在“事件提升者”选择使用的任何线程上被调用。它可以决定在一个单独的线程上触发每个事件处理程序......或者它可以使用一个单独的线程来一个接一个地调用所有处理程序......或者它可以在它自己的“普通”线程中同步执行。