【问题标题】:Windows Form runs new thread with dialog box (form) and main thread owns the dialog boxWindows 窗体使用对话框(窗体)运行新线程,主线程拥有对话框
【发布时间】:2014-10-30 11:43:27
【问题描述】:

我有一个用 C# 编写的 Windows 应用程序。当应用程序启动时,它会创建新线程以在主线程空闲时运行一些后台进程。 后台线程将显示一个对话框。 我发现如果我点击主界面,对话框会被隐藏。

问题是如何使对话框归主 UI 拥有?我知道通过将 TopMost 属性设置为 true 将使对话框停留在屏幕顶部,但我不希望这样。

请帮忙。

【问题讨论】:

  • 在后台线程上实例化和显示对话框的代码是什么?

标签: c# multithreading winforms


【解决方案1】:

您应该在主线程上触发所有 UI 更改。让后台进程将结果返回到主 UI 线程,然后从那里触发对话框。 async/await 非常适合此类任务。

这里是一个简单的例子,异步执行一些东西,然后用返回的结果设置 UI 元素...Accessing UI controls in Task.Run with async/await on WinForms

【讨论】:

    猜你喜欢
    • 2012-07-19
    • 2023-03-17
    • 1970-01-01
    • 1970-01-01
    • 2011-07-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多