C# 如何在C中的后台工作程序中使用web浏览器对象#
我对下面的代码有问题。有人能告诉我为什么它在BackgroundWorker中不起作用,我如何解决这个问题吗C# 如何在C中的后台工作程序中使用web浏览器对象#,c#,browser,backgroundworker,C#,Browser,Backgroundworker,我对下面的代码有问题。有人能告诉我为什么它在BackgroundWorker中不起作用,我如何解决这个问题吗 string address = "My URL"; webBrowser.Navigate(new Uri(address)); do { Application.DoEvents(); } while (webBrowser.ReadyState !=
string address = "My URL";
webBrowser.Navigate(new Uri(address));
do
{
Application.DoEvents();
} while (webBrowser.ReadyState != WebBrowserReadyState.Complete);
不
你最好打开一个新的线程,并从那里指导WebBrowser
Application.DoEvents()
有点像
以下是您可以开始的方式
System.Threading.Thread t = new System.Threading.Thread(() =>
{
yourWebBrowser.Navigate("http://Google.com");
});
t.ApartmentState = System.Threading.ApartmentState.STA;
t.Start();
要获得页面已加载的通知,您可以订阅DocumentCompleted事件,如下所示:
yourWebBrowser.DocumentCompleted += WebBrowserDocumentCompleted;
void WebBrowserDocumentCompleted(object sender, System.Windows.Forms.WebBrowserDocumentCompletedEventArgs e)
{
throw new NotImplementedException();
}
否,因为backgroundWorker的ApartmentState为
MTA
,而不是webbrowser的STA
needs@arash这行得通吗?如果它解决了你的问题,请考虑接受这个答案