C# 在UI中滚动后如何使用线程捕获屏幕
我有一个windows窗体,其中包含一个web浏览器控件,该web浏览器将在固定位置自动更改其位置 因此,首先我将导航设置为位置X,然后我将从表单中获取一个捕获,然后将位置更改为Y,并获取另一个捕获 我的问题是我使用导航来定位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完成,然后捕获 我尝试使用后
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函数来滚动,所以它不会在滚动时发生,谢谢