Man*_*ish 9 .net c# asp.net webbrowser-control
我试图在ASP .NET应用程序中使用WebBrowser控件:
public BrowserForm()
{
webBrowser1 = new WebBrowser();
webBrowser1.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(webBrowser1_DocumentCompleted);
}
private void webBrowser1_DocumentCompleted(Object sender, WebBrowserDocumentCompletedEventArgs e)
{
// code here
}
Run Code Online (Sandbox Code Playgroud)
但得到错误:
'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
}
Run Code Online (Sandbox Code Playgroud)
但仍然没有按照我的意愿为我工作......给我一些错误的错误:
错误HRESULT E_FAIL已从调用COM组件返回
任何工作?我不是线程或COM的专家,但是尝试将WindowApplication转换为WebApplication,它使用网页的屏幕截图提供了一个URL.:(
检查此代码项目文章在ASP.NET中使用WebBrowser控件.
在那篇文章中,转到技术规范部分,在那里你可以看到他是如何处理这个STA线程问题的.
首先,WebBrowser控件必须在一个线程中设置为单线程单元(STA)模式(参见MSDN),所以我需要创建一个线程并调用SetApartmentState()方法在开始之前将其设置为ApartmentState.STA它.
希望这可以帮助
欢呼
| 归档时间: |
|
| 查看次数: |
17374 次 |
| 最近记录: |