gpt4 book ai didi

.net - Windows 窗体 - 多个事件循环

转载 作者:行者123 更新时间:2023-12-04 12:26:09 25 4
gpt4 key购买 nike

我有一个可以同时打开多个文档的 Windows 窗体 (.NET) 应用程序。

让每个文档(表单)运行自己的事件循环会很方便。通过简短的实验,在他们自己的 STA 线程中启动几个事件循环似乎可以工作。有什么理由说明这是一个坏主意吗?

最佳答案

我认为在不同的线程上创建多个消息循环是非常好的。唯一需要注意的是在处理 3rd 方 UI 工具包时,它们有时将句柄存储为静态(而不是 ThreadStatic)成员,如果您的应用程序中有多个 UI 线程,它会出现问题(在我的情况下,我发现菜单/工具栏键盘加速器无法正常工作)。

这样做的一个重要原因是,如果您有显示在不同无模式对话框上的模式对话框。如果您将所有内容放在同一个消息循环中,那么如果其中一个无模式对话框具有模态对话框,则整个应用程序(所有窗口)都将被阻止,直到您关闭模态对话框。

而且,就像凯文所说的那样,注意跨窗口(跨线程)调用。您可以使用 Control.BeginInvoke 或 Control.Invoke 在其他 UI 线程上发布委托(delegate)调用。

要考虑的另一件事是您将如何退出您的流程。您很可能需要跟踪消息循环,以便在您想要关闭所有内容时停止它们。如果您不关心并且只想在所有窗口关闭时结束该过程,您也可以这样做。

关于.net - Windows 窗体 - 多个事件循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/248449/

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