Osc*_*ros 5 c# events multithreading event-handling
如果我要解雇这个事件:
var handler = OnMyEvent;
if (handler != null)
{
handler(some_info);
}
Run Code Online (Sandbox Code Playgroud)
然后执行线程将等待,直到所有suscriber方法返回以继续执行后行:
handler(some_info);
Run Code Online (Sandbox Code Playgroud)
?
或者"在另一个线程中"触发事件,这意味着它会自动转到下一行之后handler(some_info)?
Sti*_*gar 10
事件在同一个线程上触发,它将一直阻塞直到它们完成.当然,事件处理代码本身可以产生另一个线程并立即返回,但这是完全不同的事情.
另请注意,像桌面应用程序(如Windows窗体应用程序)中的按钮单击等事件会放在消息队列中,并且会一次触发一个.即,如果您按一个按钮然后按另一个按钮,第二个按钮事件将不会触发,直到第一个按钮事件完成.表单也不会重新绘制,并且"没有响应",因为绘制表单也是一个事件.
| 归档时间: |
|
| 查看次数: |
2229 次 |
| 最近记录: |