【发布时间】:2015-03-30 17:10:33
【问题描述】:
我编写了一个 c# 程序来倒计时 5 秒。我要做的是:
new Task(() =>
{
try
{
this.Invoke((Action)delegate()
{
label1.Text = "5"; // 4, 3, 2..etc
});
}
Thread.Sleep(1000);
}
catch
{
// form could be disposed
break;
}
}
}).Start();
这适用于我的 PC,但是,当我将程序复制到窗口平板电脑时,Thread.Sleep(1000) 提供了超过 1 秒的时间。也就是说,从 5,4,3,2,1 更新标签需要超过 5 秒(实际上超过 10 秒)。或者,更新label1.Text =“5”等需要太长时间?这对我来说没有意义。我想知道有什么问题吗?
【问题讨论】:
-
没有错。
Thread.Sleep(n)保证,您的线程不会在n毫秒过去之前被通知/唤醒,仅此而已。您的线程 bean 是否在n毫秒过去之前被唤醒?没有。Thread.Sleep(n)工作得很好。
标签: c# multithreading timer sleep