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。
如果您多次导航,您只需要保持一些状态即可了解您在流程中的位置。
请建议一种方法或函数,使代码在继续之前等待几秒钟。我知道 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。
如果您多次导航,您只需要保持一些状态即可了解您在流程中的位置。