【发布时间】:2011-01-20 10:13:39
【问题描述】:
我尝试在 ASP .NET 应用程序中使用 WebBrowser 控件:
public BrowserForm()
{
webBrowser1 = new WebBrowser();
webBrowser1.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(webBrowser1_DocumentCompleted);
}
private void webBrowser1_DocumentCompleted(Object sender, WebBrowserDocumentCompletedEventArgs e)
{
// code here
}
但出现错误:
'8856f961-340a-11d0-a96b-00c04fd705a2' 无法实例化,因为 当前线程不在 单线程公寓
然后我做了这样的事情:
public BrowserForm()
{
ThreadStart ts = new ThreadStart(StartThread);
var t = new Thread(ts);
t.SetApartmentState(ApartmentState.STA);
t.Start();
}
[STAThread]
public void StartThread()
{
webBrowser1 = new WebBrowser();
webBrowser1.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(webBrowser1_DocumentCompleted);
}
[STAThread]
private void webBrowser1_DocumentCompleted(Object sender, WebBrowserDocumentCompletedEventArgs e)
{
//code here
}
但它仍然没有按我的意愿工作...给我一些奇怪的错误,例如:
错误 HRESULT E_FAIL 已返回 从对 COM 组件的调用
有什么办法吗??我不是线程或 COM 专家,但试图将 WindowApplication 转换为 WebApplication,它会截取提供 URL 的网页的屏幕截图。 :(
【问题讨论】:
-
虽然您要求提供解决方案,但只是想...一种实现相同目的的方法是创建一个 ActiveX 控件来执行屏幕截图工作,并将其添加到您的 ASP.NET 应用程序...
标签: c# .net asp.net webbrowser-control