gpt4 book ai didi

c# - 运行多个 UI 线程

转载 作者:太空狗 更新时间:2023-10-29 18:17:19 26 4
gpt4 key购买 nike

跳到问题的底部;这只是一些额外的信息

我正在使用一个组件 (GeckoFX) 来呈现一些网站,很好,但它只能在 Windows 窗体中使用;因为它必须绑定(bind)到可以绘制的 WinForms 对象。因为所有 WinForms 都在同一个线程中运行,所以我一次只能使用一个 GeckoFX 实例;所以我决定以 WinForm 的形式创建一个“ worker 类”,并在其中添加所有逻辑。该表单不需要与主表单通信。

现在我可以启动 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());
}
}

关于c# - 运行多个 UI 线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1566791/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com