C#等待,不要让线程睡眠并冻结程序。

时间:2015-07-11 10:49:19

标签: c# .net multithreading visual-studio-2010

请建议一种方法或功能,使代码在继续之前等待几秒钟。我知道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());

2 个答案:

答案 0 :(得分:0)

我猜W1是一个WebBrowser控件。

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

您可以使用DocumentCompleted事件来了解WebBrowser已完成加载,然后您可以访问新URL的DOM。

如果您多次导航,您只需要保留一些状态即可知道您在此过程中的位置。

答案 1 :(得分:-1)

我会使用BackgroundWorker进行下载,在此主题中,您可以在下载之前使用Sleep函数。

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