如何等待Timer完成然后从函数返回?

Jac*_*ack 5 c# browser timer

我想等到计时器完成然后从函数返回.我试过这个:

while(timer1.Enabled)
{
    Application.DoEvents();
}
return value;
Run Code Online (Sandbox Code Playgroud)

但它没有工作,函数在计时器真正完成之前返回.这是完整的功能:

System.Windows.Forms.Timer timer1 = new System.Windows.Forms.Timer();
int[] foo()
{

    do_something1();

    int[] some_value;

    timer1.Interval = 1000;
    timer1.Tick += new EventHandler(delegate(object o, EventArgs ea)
    {
        if (browser.ReadyState == WebBrowserReadyState.Complete)
        {
            timer1.Stop();
            baa(some_value);
        }
    });
    timer1.Start();

    while (timer1.Enabled)
    {
        Application.DoEvents();
    }

    return some_value;
}
Run Code Online (Sandbox Code Playgroud)

Sel*_*enç 5

我认为你真正想要的是等到浏览器准备好了.如果是这样,你可以使用这样的循环,而不是Application.DoEvents()我建议使用async/await功能:

while(browser.ReadyState != WebBrowserReadyState.Complete)
{ 
   // you need to make your method async in order to use await
   await Task.Delay(1000);
}
// do your job
Run Code Online (Sandbox Code Playgroud)

或者你可以更好地处理DocumentCompletedWebBrowser的事件.