MTAThread中使用WebBrowser的问题

venlentine 2009-07-24 03:04:01
试了网上N多方法都没有成功

主程序
[MTAThread]
static void Main()
{

采用CreateInstance方式创建子窗口

子窗口中要使用WebBrowser,,只要一 new WebBrowser();就报错
当前线程不在单线程单元中,因此无法实例化 ActiveX 控件“8856f961-340a-11d0-a96b-00c04fd705a2”。

用代理的方式,还是设置线程为单线程的方式,都无法创建

设置单线程方式创建
Thread t = new Thread(new ThreadStart(AddWebBrowser));
t.SetApartmentState(ApartmentState.STA);
t.Start();
private void AddWebBrowser()
{
web = new WebBrowser();
//SetText(web);
}

提示"在可以调用 OLE 之前,必须将当前线程设置为单线程单元(STA)模式。请确保您的 Main 函数带有 STAThreadAttribute 标记。"

设置成用委托方式创建,也不行
private void AddWebBrowser()
{
//web = new WebBrowser();
SetText(web);
}

delegate void SetWebBrowser(WebBrowser wwb);
private void SetText(WebBrowser wwb)
{
if (this.palDetail.InvokeRequired)
{
SetWebBrowser d = new SetWebBrowser(SetText);
this.Invoke(d, new object[] { wwb });
}
else
{
wwb = new WebBrowser();
this.palDetail.Controls.Add(wwb);
}
}


求高手帮忙一下,那么多多线程的程序,难道都不使用WebBrowse控件吗??谢谢
...全文
160 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
szyicol 2009-07-26
  • 打赏
  • 举报
回复
关注一下
shrinerain 2009-07-24
  • 打赏
  • 举报
回复
main方法标记为STAThread ,并不表示你的程序就不能起多线程.

110,539

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧