跳到底部查看问题;这只是一些额外信息
我正在使用一个组件(GeckoFX)来渲染一些网站,很好,但它只能在 Windows 窗体中使用;因为它必须绑定到可以绘制的 WinForms 对象。因为所有 WinForm 都在同一个线程中运行,所以我一次只能使用一个 GeckoFX 实例;所以我决定以 WinForm 的形式创建一个“工作类”,并在其中添加所有逻辑。该表单不需要与主表单进行通信。
现在我可以启动 10 个窗口,它们最终会工作,但每个新表单都会在所有其他表单处理完所有 GeckoFX 事件之前等待,因为您不能在一个线程上使用多个实例。此外,浏览器必须位于 UIThread 上。所以:
是否可以创建多个 UI 线程(每个表单一个)?
我见过有人这样做([编辑:删除了“坏”链接]),但没有人让他的代码示例正常工作。让它工作的人最初使用某种形式的自定义消息泵来做这种事情,但我不知道如何实现类似的事情。
我不认为您所要求的确实是您想要的,但为每个线程创建消息泵很容易,您只需为每个线程调用一次 Application.Run 即可。
static class Program
{
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main()
{
Thread t1 = new Thread(Main_);
Thread t2 = new Thread(Main_);
t1.Start();
t2.Start();
t1.Join();
t2.Join();
}
static void Main_()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)