延迟c#而不是thread.sleep

时间:2013-03-24 11:10:48

标签: c# .net

Guys在VB中是否有像c#中的任何选项?

Sub Delay(ByVal dblSecs As Double)

Const OneSec As Double = 1.0# / (1440.0# * 60.0#)
Dim dblWaitTil As Date
Now.AddSeconds(OneSec)
dblWaitTil = Now.AddSeconds(OneSec).AddSeconds(dblSecs)
Do Until Now > dblWaitTil
Application.DoEvents() ' Allow windows messages to be processed
Loop

End Sub

3 个答案:

答案 0 :(得分:0)

您需要Timer课程或DispatcherTimer课程,以满足您的需求。

答案 1 :(得分:0)

Patterson算法适用于我认为的调度员。

http://en.wikipedia.org/wiki/Sardinas%E2%80%93Patterson_algorithm

答案 2 :(得分:0)

是的,您可以在C#中执行相同的操作,但这是一个非常糟糕的主意。

这种暂停方式称为忙循环,因为它会使主线程使用尽可能多的CPU。

你要做的是设置一个计时器,并从tick事件中调用一个回调方法:

public void Wait(double seconds, Action action) {
  Timer timer = new Timer();
  timer.Interval = (int)(seconds * 1000.0);
  timer.Tick += (s, o) => {
    timer.Enabled = false;
    timer.Dispose();
    action();
  };
  timer.Enabled = true;
}

用法示例:

textbox.text = "Test";
Wait(5.0, () => {
  textbox.text = "Finish";
});