在另一个线程中运行一个表单

时间:2010-06-17 02:14:45

标签: c# forms multithreading

我的c#项目中有五个表单。一个主持一个我希望连续运行的httplistener。当侦听器收到消息时,它会将其传递给静态类,静态类又调用适当的表单进行另一次处理。

静态类是否可能在新线程中调用新表单?如果是这样请帮帮我

3 个答案:

答案 0 :(得分:1)

表单中的代码应该只处理表单的可视方面。任何其他内容,尤其是http侦听器,都应该使用在后台线程上运行的单独类来处理。

答案 1 :(得分:1)

“调用表单”并不意味着什么,我想你只想显示()它。在工作线程上创建表单从不是一个好主意。即使您确实获得了正确的线程状态(STA和消息循环),您也将难以解决Z顺序和模态问题。

只需使用Control.Invoke在UI线程上运行代码即可。它应该创建表单并调用它的Show()方法。

答案 2 :(得分:0)

正如汉斯所说,可能不推荐,但如有必要,您可以从任何主题调用System.Windows.Forms.Application.Run()。如果你这样做的话,要小心并知道你在做什么。