-6

みんな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
4

3 に答える 3

0

ニーズに合ったTimerクラスまたはDispatcherTimerクラスが必要です。

于 2013-03-24T11:13:21.770 に答える
0

パターソンアルゴリズムは、ディスパッチャに適していると思います。

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

于 2013-03-24T11:17:41.770 に答える
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";
});
于 2013-03-24T11:19:44.907 に答える