如何运行一个带有自己消息泵的表单?

3

我有一个应用程序,需要打开许多与我的应用程序不同且独立运行的表单。然后,我的应用程序会在长时间运行的操作上阻塞(使这些操作异步化不可能)。因此,我想在单独的线程上运行这些表单,并拥有它们自己的消息循环。

有什么方法可以做到这一点吗?

2个回答

3
Application.Run();

这应该在自己的线程上启动表单,并拥有自己的消息泵。编辑:http://en.csharp-online.net/Application_Architecture_in_Windows_Forms_2.0%E2%80%94Application_Lifetime。每当调用 Application.Run 时,都会创建一个新的 UI 线程,因此这应该实现了您要寻找的功能。编辑 #2:http://msdn.microsoft.com/en-us/library/system.windows.forms.application.run(VS.71).aspx。文档有些模棱两可。我总是使用线程池来执行长时间运行的操作,并定期将控件传回表单以呈现状态,但听起来您可以使用 Application.Run() 来生成多个表单。

1
答案可以更精确 - 创建一个独立的线程。在其工作函数中,使用 Application.Run(Form)。希望我的理解是正确的 :) - Nayan
@Nayan - +1 我也是这样理解的,但我不能确切地说出来,所以我宁愿链接到文档,而不是提供错误的答案。 - Tim M.
是的...文档...跟我说吧。唉! - Nayan

0
使用重载的Application.Run(ApplicationContext)方法。在此之前创建一个ApplicationContext对象,并将其与窗体关联(context.MainForm=yourForm)。当窗体关闭或完成其他操作时,调用ApplicationContext.ExitThread()方法。祝编码愉快。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接