0

我正在使用 C#/.net 开发一个多线程应用程序
我希望每个线程都创建自己的表单,以便它可以访问它并在其表单上显示其信息而没有任何问题
有没有办法做到这一点?
我试过 Application.Run(new MyForm()) 但问题是这个函数阻止了执行,我的线程无法完成它的工作。

4

3 回答 3

2

这是设计使然。线程一次只能做一件事,因此如果您的代码运行该线程上的 UI 将被阻止,并且如果您想运行 UI 您将不得不使用一些消息传递结构(例如计时器)来获取你的工作完成了。

正确的方法确实是让一个 UI 线程和其他线程异步发布进度消息以显示在 UI 上(BeginInvoke例如在表单上使用,从其他线程调用它是安全的)。

于 2012-07-29T22:40:31.803 回答
1

您可以使用Show表单的方法来显示它,即使您想在表单中显示一个表单Dialog也可以使用ShowDialog方法,Dialog 将位于其他表单之上。

于 2012-07-29T22:35:20.713 回答
0

您需要使用 Show 方法从其线程中打开表单,并且您不能在来自不同线程的表单之间进行链接,例如来自不同线程的 MDI 父级和子级。顺便说一句,您可以在主 GUI 线程中打开所有表单并使用调用来显示来自其他线程的数据而没有任何问题,我认为这种方法更好。看这里:http: //msdn.microsoft.com/en-us/library/ms951089.aspx

于 2012-07-29T22:36:12.893 回答