C# 等待而不使线程休眠并冻结程序。

C# Wait without making the thread sleep and freezing the program.

请建议一种方法或函数,使代码在继续之前等待几秒钟。我知道 thread.sleep 方法,但它会冻结整个程序。

我想暂停一下,让程序在继续下一部分之前执行其过程。目前,该程序执行所有程序的速度太快,以至于其他程序无法跟进。

这是我的代码:

     {
        w1.Document.GetElementById("lst-ib").InnerText = "some text";
        w1.Document.Forms[0].InvokeMember("submit");

      //Some code here that would create a 1 second pause before downloading html. 
      //Thread.sleep(2000) is not suitable. 

        string html = new WebClient().DownloadString(w1.Url.ToString());

我会使用 BackgroundWorker 进行下载,在此线程中,您将在下载前使用 Sleep 功能。

http://www.codeproject.com/Articles/99143/BackgroundWorker-Class-Sample-for-Beginners

我猜 W1 是一个 WebBrowser 控件。不用提交表单和休眠,而是使用控件公开的事件来知道文档已准备就绪。

您可以使用 DocumentCompleted 事件知道 WebBrowser 已完成加载,然后您可以访问 DOM 以获取新的 URL。

如果您多次导航,您只需要保持一些状态即可了解您在流程中的位置。