0

我持有的web浏览器控件的Windows窗体滚动后捕获屏幕,该Web浏览器将改变它在固定位置的位置自动如何使用线程UI

所以首先我把导航定位X那么我会从我的表格中抓取一张图片,然后将位置更改为Y,然后再拍摄一张。

我的问题是,我使用的导航定位像

webBrowser1.Navigate("javascript:window.scroll(0," + X + ");"); 

所以我应该等待告诉UI改变则位置执行捕捉代码,完成后我的位置重新更改为Y轴相同方式并等待告诉UI完成然后捕获。

我尝试使用后台工作,但它不支持我,我也尝试线程,但作为我;米不太好处理线程我的用户界面没有在捕获前导航。 我使用线程,如:

ThreadStart captureFunc = new ThreadStart(CaptureScreen); 
Thread captureThread = new Thread(captureFunc); 
captureThread.Start(); 
while (!doneVal) 
{ 

} 
captureThread.Abort(); 

CaptureScreen是我的拍摄功能和doneVal是默认为false和捕获后改为true值。 任何帮助将不胜感激。

+0

使用同步原语,如'Mutex','Events'和'WaitHandles'。你永远不应该无限循环来创建一个“同步”。 –

+0

我不太喜欢使用线程,但我现在正在阅读它,谢谢:) – AshOoO

回答

0

WebBrowser -control offers Events,例如Navigated -Event。
您可以使用它来确定WebBrowser - 控制的导航结束:

webBrowser1.Navigated += NavigatedEventHandler; //use in constructor for example 

... 

private void NavigatedEventHandler(object sender, NavigatedEventArgs e){ 

    //perform actions here 

} 
+0

这个事件只发生在导航自己的URL时发生,我的导航类似于执行javascript函数来滚动,所以它不会发生时只是滚动,谢谢 – AshOoO