gpt4 book ai didi

c# - C# 中的触发事件会阻止当前线程执行吗?

转载 作者:太空狗 更新时间:2023-10-29 22:20:29 24 4
gpt4 key购买 nike

如果我正在触发事件:

var handler = OnMyEvent;

if (handler != null)
{
handler(some_info);
}

然后执行线程会等到所有订阅者方法返回后继续执行:

handler(some_info);

?

或者事件在“另一个线程”中触发,这意味着它会自动转到 handler(some_info) 之后的下一行?

最佳答案

事件在同一个线程上触发,它将阻塞直到它们完成。当然,事件处理代码本身可以生成另一个线程并立即返回,但这是完全不同的事情。

另请注意,桌面应用程序(如 Windows 窗体应用程序)中的按钮点击等事件被放置在消息队列中,并且一次会触发一个事件。也就是说,如果您按下一个按钮然后按下另一个按钮,则第二个按钮事件将在第一个按钮完成之前触发。此外,表单不会重新绘制并且将“不响应”,因为绘制表单也是一个事件。

关于c# - C# 中的触发事件会阻止当前线程执行吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5933989/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com