Windows窗体运行带有对话框(窗体)的新线程,主线程拥有该对话框

时间:2014-10-30 02:53:31

标签: c# multithreading winforms

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

问题是如何通过主UI使对话框成为自己的对话框?我知道通过将TopMost属性设置为true会使对话框保持在屏幕顶部,但我不想要这个。

请帮忙。

1 个答案:

答案 0 :(得分:1)

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

这是一个异步执行某些内容然后使用返回的结果设置UI元素的简单示例... Accessing UI controls in Task.Run with async/await on WinForms