gpt4 book ai didi

c# - DLL 上的 STAThead,用于与 Task/BackgroundWorker 一起使用

转载 作者:行者123 更新时间:2023-11-30 21:17:08 24 4
gpt4 key购买 nike

早上好

我制作了一个简单的 dll,我在其中使用 WebBrowser 控件来执行一些简单的任务。现在我想在单独的任务或 BackgroundWorker 中使用主 UI 中的方法。问题是,每当我使用这些方法时,都会出现“no STAThread”异常……我该如何解决这个问题?当然,在 dll 中没有 Main() 方法,我也不能将 STAThread 属性添加到构造函数。

非常感谢。

最佳答案

好吧,要让代码在新的 STA 线程中运行,您应该创建一个新线程并使用 Thread.SetApartmentState 显式强制它成为 STAThread。在开始之前。然后,您需要使用 Control.BeginInvoke 将调用编码回 UI 线程 - 您不想使用 BackgroundWorkerTask ,因为它们将使用线程池线程。

另一方面,不清楚这在这种情况下是否有帮助 - 如果您使用的是 WebBrowserControl,您可能需要运行消息循环等。

“从主 UI 使用它的方法”并不是很清楚您的意思。这是在普通 UI 线程中运行的 UI 的 WebBrowserControl 部分吗?如果是这样,您将需要从另一个线程编码该线程(例如使用Control.BeginInvoke)-另一个线程不需要是 STA发生这种情况的线程。

关于c# - DLL 上的 STAThead,用于与 Task/BackgroundWorker 一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4955038/

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