C# 如何在webBrowser文档上完成多线程?
见上文。 我的问题是,如何使它们同时运行(使两个线程手动控制对它们的监视),现在的问题是它们都在主线程上单独运行,我不能执行其他任务,谢谢您的帮助!对不起,英语不好 我试着使用,例如:C# 如何在webBrowser文档上完成多线程?,c#,multithreading,C#,Multithreading,见上文。 我的问题是,如何使它们同时运行(使两个线程手动控制对它们的监视),现在的问题是它们都在主线程上单独运行,我不能执行其他任务,谢谢您的帮助!对不起,英语不好 我试着使用,例如: private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e) { //list of tasks } private void webBrowser2_DocumentCompl
private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
//list of tasks
}
private void webBrowser2_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
//list of tasks
}
但那就是使用线程来导航,一旦导航完成,系统就会单独运行完成的文档。
我不知道如何控制它们,谢谢你的帮助
我已经将任务包装在一个函数中,现在问题是
当我这样做的时候,它不起作用
Thread threadw1 = new Thread(() => webBrowser1.Navigate("url1"));
Thread threadw2 = new Thread(() => webBrowser2.Navigate("url2"));
threadw1.Start();
threadw2.Start();
将要运行的任务放入
DocumentCompleted
事件的处理程序中。我用了一根线,因为你提到了它。我建议使用ThreadPool
或Task
wbb1.SetApartmentState(ApartmentState.STA);
我曾尝试创建一个线程来处理它,但该函数在页面完全加载后自动调用,我不知道如何手动触发或监视它们。我建议您在DocumentCompleted函数中创建线程,并让这些线程调用函数来执行任务列表(如果它们不是GUI任务)只有在另一个线程上创建WebBrowser对象时,才可能执行此操作。特殊螺纹,必须符合STA合同要求。涵盖内容:将它们包装在函数中,然后创建一个线程来运行它可能是一种有效的方法,我想我会尝试一下如果页面在线程中的代码运行时导航离开,就会发生这种情况。你确定你要保持在同一页上吗?我不明白:你想对文档完成后立即更改的页面做什么。哦,不,事实上,它仍然在同一页上,现在我很困惑,因为我已经编辑了上面的内容,我只使用了一个线程来包装它们,太奇怪了,我认为线程试图在页面加载wbb1.SetApartmentState(ApartmentState.STA)之前运行,这解决了问题
private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
if (webBrowser1.ReadyState < WebBrowserReadyState.Complete) return;
// Do the work, you have the event args in ev
//Thread wbb1 = new Thread(() => wb1task());
// wbb1.Start();
wb1task();
}
wbb1.SetApartmentState(ApartmentState.STA);
private void webBrowser1_DocumentCompleted(object sender,
WebBrowserDocumentCompletedEventArgs e)
{
new Thread((state) => {
WebBrowserDocumentCompletedEventArgs ev =
(WebBrowserDocumentCompletedEventArgs) state;
// Do the work, you have the event args in ev
}) {Name = "Thread for webBrowser1"}.Start(e);
}