我正在使用C#/ .net中的多线程应用程序
我希望每个线程都创建自己的表单,以便它可以访问它并在其表单上显示其信息而没有任何问题
有没有办法做到这一点?
我已经尝试过Application.Run(new MyForm()),但问题是这个函数阻止了执行,我的线程无法完成它的工作。
答案 0 :(得分:2)
这是设计的。线程一次只能做一件事,所以如果你的代码运行,该线程上的UI将被阻止,如果你想运行一个UI,你将不得不使用一些消息传递构造(如计时器)来获取你的工作已经完成。
正确的方法是拥有一个UI线程并让其他线程异步发布进度消息以便在UI上显示(例如,在表单上使用BeginInvoke
,可以安全地从其他线程调用)
答案 1 :(得分:1)
您可以使用表单的Show
方法来展示它,即使您希望以Dialog
形式显示表单,也可以使用ShowDialog
方法,Dialog将位于其他形式。
答案 2 :(得分:0)
您需要使用Show方法从其线程打开表单,并且您无法在不同线程的表单之间进行链接,例如来自不同线程的MDI父级和子级。 顺便说一下,你可以在主GUI线程中打开所有表单,并使用invoke来显示来自其他线程的数据而没有任何问题,我认为这种方法更好。看这里:http://msdn.microsoft.com/en-us/library/ms951089.aspx