C#System.Threading.Thread.Sleep很慢

时间:2015-05-03 07:38:16

标签: c# sleep

我正在使用System.Threading.Thread.Sleep(50);但我觉得要慢,我不知道为什么,但确实如此。

看看我的代码:

    clickButton();
    System.Threading.Thread.Sleep(SLEEP_AFTER_CLICK_PAGE);

我需要先clickButton();,然后我需要sleep程序。但是,如果我运行代码,编程首先睡眠和睡眠后调用方法 clickButton();?为什么?我不明白这一点......

程序只在一个帖子中。

编辑代码:

private void timer1_Tick(object sender, EventArgs e)
{
    clickButton();
    timer1.Stop();
    System.Threading.Thread.Sleep(SLEEP_AFTER_CLICK_PAGE);
    timer1.Start();
}
private void clickButton()
{   
                       webBrowser1.Document.GetElementById("skip_ad_button").InvokeMember("click");
}

2 个答案:

答案 0 :(得分:1)

我怀疑你期望的行为是:

  1. 点击按钮
  2. 更新一堆东西(明显地)
  3. 睡眠
  4. 但是发生的事情是直到睡眠后才发生可见的更新......

    您需要在睡觉前强制更改UI,因为您正在阻止它。您通常可以通过添加...

    来完成此操作
    Application.DoEvents();
    

    睡觉前。

答案 1 :(得分:0)

if (mCursor.getCount() == 0) { // cursor is empty } 会做各种奇怪的事情。可能是单击的调用存储在某个队列中,该队列受Sleep影响。我不确切知道,但我知道应该不惜一切代价避免Thread.Sleep

我建议您使用两个计时器而不是一个计时器。一个用于点击,一个用于等待,再次启用第一个计时器。如果你这样做,你就让你的应用程序在你等待时做它的东西。使用Sleep,它会停止正在进行的操作,直到时间结束。

像这样:

Thread.Sleep