我需要在HTML页面中获得有关应用CSS样式的信息.我使用AxWebBrowser并迭代IHTMLDOMNode.我能够获得所需的所有数据,并将代码转移到我的应用程序中.问题是这部分在后台工作程序中运行,我在try 实例化控件时遇到异常.

AxWebBrowser browser = new AxWebBrowser();

ActiveX control '8856f961-340a-11d0-a96b-00c04fd705a2' cannot be instantiated
because the current thread is not in a single-threaded apartment.

除了AxWebBrowser之外,还有什么方法可以解决这个或其他选项吗?

推荐答案

您遇到的问题是,大多数后台线程/工作器API将在多线程单元状态下创建线程.错误消息指示控件要求线程是单线程单元.

您可以通过自己创建一个线程并在线程上指定STA单元状态来解决这个问题.

var t = new Thread(MyThreadStartMethod);
t.SetApartmentState(ApartmentState.STA);
t.Start();

.net相关问答推荐

Azure Function应用程序-如何升级.NET运行时

为什么Regex.Escape支持数字符号和空格?

在 F# 中处理 Option - Some(null) 的好策略是什么

等待时 Blazor 服务器按钮刷新

使用 Powershell TOM 在 SSAS 表格中创建分区

信号量的多线程问题

MongoDB GridFs with C#,如何存储图片等文件?

如何将 Javascript 日期时间转换为 C# 日期时间?

如何获取 Sql Server 数据库中所有模式的列表

如何 Select 数据表中列的最小值和最大值?

Await 运算符只能在 Async 方法中使用

公钥令牌的作用是什么?

如何制作通用类型转换函数

什么是 C# 中的自动属性,它们的用途是什么?

log4net的正确使用方法(记录器命名)

判断 .NET 中的目录和文件写入权限

我应该如何删除 DbSet 中的所有元素?

ConfigurationManager.AppSettings - 如何修改和保存?

如何修改 KeyValuePair 值?

不签署 .NET 程序集有什么问题吗?