事件和线程

ren*_*ren 5 .net c# events multithreading event-handling

假设我有:

ethernet_adapter.PacketArrived += (s, e) => 
{
    //long processing...
};
Run Code Online (Sandbox Code Playgroud)

处理可能需要很长时间,而当它处于中间时,另一个数据包已到达.接下来会发生什么:处理完成然后触发另一个事件,或者可能在新线程上立即触发新事件?

Til*_*lak 2

你不应该假设。它可以是任何内容,具体取决于(ethernet_adapter对象)类型引发事件的方式。

如果是同步操作,则直到当前操作正在进行时才会引发新事件。

如果是异步操作,新事件将立即引发。