我有一个带有浏览器控件的窗口。当有人关闭窗口时,我需要将浏览器控件导航到特定的URL,并且只有在浏览器完成后导航窗口才需要关闭。
当窗口关闭时,会调用OnBeforeWindowClose(Eventargs e)
方法。
OnBeforeWindowClose(Eventargs e)
{
// As soon as the URL property is set the browser control navigates to the URL
URL = "new URL";
//I need to wait till the browser is done navigating. Based on the NavigationFinished property below
}
bool NavigationFinished {set; get;}
我无法使用Thread.Sleep
,因为它会导致UI线程休眠。在NavigationFinised变为true之前,我无法找到暂停执行OnBeforeClose的方法。不阻止UI线程。
更新:将以下循环添加到为我工作的OnBeforeWindowClose方法
do
{
var dateTime = DateTime.Now.AddSeconds(2);
while (DateTime.Now < dateTime)
{
System.Windows.Forms.Application.DoEvents();
}
} while (!NavigationFinished);
但我想知道是否有更好的方法来实现这一点而不是在.Net 4.0中使用循环
答案 0 :(得分:0)
这有点可以解决,但可以满足您的要求:
所以这里的想法是通过取消 - 做某事来实现暂停 - 然后以编程方式重新闭合。