Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/visual-studio-2010/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在UI中滚动后如何使用线程捕获屏幕_C#_Multithreading_Webbrowser Control_Windows Forms Designer - Fatal编程技术网

C# 在UI中滚动后如何使用线程捕获屏幕

C# 在UI中滚动后如何使用线程捕获屏幕,c#,multithreading,webbrowser-control,windows-forms-designer,C#,Multithreading,Webbrowser Control,Windows Forms Designer,我有一个windows窗体,其中包含一个web浏览器控件,该web浏览器将在固定位置自动更改其位置 因此,首先我将导航设置为位置X,然后我将从表单中获取一个捕获,然后将位置更改为Y,并获取另一个捕获 我的问题是我使用导航来定位 webBrowser1.Navigate("javascript:window.scroll(0," + X + ");"); 因此,我应该等待告诉ui更改位置,然后执行捕获代码,完成后,我应该以相同的方式将位置重新更改为Y,然后等待告诉ui完成,然后捕获 我尝试使用后

我有一个windows窗体,其中包含一个web浏览器控件,该web浏览器将在固定位置自动更改其位置

因此,首先我将导航设置为位置X,然后我将从表单中获取一个捕获,然后将位置更改为Y,并获取另一个捕获

我的问题是我使用导航来定位

webBrowser1.Navigate("javascript:window.scroll(0," + X + ");");
因此,我应该等待告诉ui更改位置,然后执行捕获代码,完成后,我应该以相同的方式将位置重新更改为Y,然后等待告诉ui完成,然后捕获

我尝试使用后台工作程序,但它不支持我,我也尝试线程,但我;我不太善于处理线程,我的ui在捕获之前没有导航。 我使用线程,比如:

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

}
captureThread.Abort(); 
CaptureScreen
是我的捕获函数,
doneVal
是一个默认为false的值,捕获后更改为true。
任何帮助都将不胜感激。

网络浏览器-control提供
事件
,例如-Event。
您可以使用它来确定
WebBrowser
-控件导航的结束:

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

...

private void NavigatedEventHandler(object sender, NavigatedEventArgs e){

    //perform actions here

}

使用同步原语,如
互斥体
事件
等待句柄
。你不应该无限循环来创建一个“同步”。我不太喜欢使用线程,但我现在正在阅读关于它的内容。谢谢:)这个事件只在导航URL时发生。它自己我的导航类似于执行javascript函数来滚动,所以它不会在滚动时发生,谢谢