Tag: 消息泵

运行多个UI线程

跳到问题的底部; 这只是一些额外的信息 我正在使用一个组件(GeckoFX)来渲染一些网站,很好,但它只能在Windows窗体中使用; 因为它必须绑定到可以绘制的WinForms对象。 由于所有的WinForms都在同一个线程中运行,我一次只能使用一个GeckoFX实例; 所以我决定创build一个WinFormforms的“工人类”,并在其中添加所有的逻辑。 表单不需要与主表单进行通信。 现在我可以启动10个窗口,最终它们将工作,但是在所有其他窗体处理完所有GeckoFX事件之前,每个新窗体都将等待,因为您不能在一个线程上使用多个实例。 此外,浏览器必须在UIThread上。 所以: 是否有可能创build多个UI线程(每个表单一个)? 我看到有人这样做( http://74.125.77.132/search?q=cache:PrFTaH2nx_YJ:geckofx.org/viewtopic.php%3Fid%3D453+geckofx+service&cd=1&hl=nl&ct=clnk&gl=nl&client=firefox-a ),但从来没有人得到他的代码示例工作。 做这个工作的人最初使用某种forms的定制信息来做这种事情,但我不知道如何做到这一点。

什么是消息泵?

在这个线程 (大约一年前发布)中,讨论了在非交互式会话中运行Word的问题。 这个(相当强)的build议是不这样做的。 在其中的一篇文章中提到:“Office API都假设你在桌面上的交互式会话中运行Office,具有显示器,键盘和鼠标,最重要的是一个消息泵。 我不确定那是什么 (我已经用C#编写了大约一年;我的其他编程经验主要用于ColdFusion。) 更新: 我的程序通过大量的RTF文件运行,以提取用于构build医疗报告编号的两条信息。 我没有试图弄清楚RTF中的格式化指令是如何工作的,而是决定在Word中打开它们,并从那里拉出文本(而不是真的启动GUI)。 偶尔,程序在处理一个文件的过程中被打断,并且留下了一个附加在该文件上的Word线程(我仍然需要弄清楚如何closures这个文件)。 当我重新运行程序时,当然我得到了一个使用该文件的线程的通知,并且我想打开一个只读副本? 当我说“是”时,Word GUI突然从无处popup,开始处理文件。 我想知道为什么发生这种情况。 但它看起来像也许一旦对话框popup消息泵开始推动主要的graphics用户界面到Windows?