.NETではタイマーが正確ではありません。正確に30000を得ることはできません。
Thread.Sleep(30000
を使用できます。またはawait Task.Delay(30000)
ですが、方法をasync
とマークする必要があります。
違いは、Thread.Sleep
は現在のスレッドをブロックしますが、Task.Delayはブロックしません。
public async Task MyMethod()
{
int n;
int m = 100;
for(n=0; n<=m; n++)
{
//show data;
//wait for 30 seconds
await Task.Delay(30000);
}
}
.NET 4の場合、あなたはこのalternativeを使用することができます:あなたは、いくつかのオプションを持っている
public static Task Delay(double milliseconds)
{
var tcs = new TaskCompletionSource<bool>();
System.Timers.Timer timer = new System.Timers.Timer();
timer.Elapsed += (obj, args) =>
{
tcs.TrySetResult(true);
};
timer.Interval = milliseconds;
timer.AutoReset = false;
timer.Start();
return tcs.Task;
}
。 'Task.Delay'や' Thread.Sleep'が気に入らなければ、あなたはDateTimeとLoopを使ってあなた自身を書くことさえできます。 'Timer'クラスもあります。これはあなたを助けるかもしれません。 – Jannik
*何も表示しない*どのように* 30秒待つと、何が間違っているかを知っていると思いますか?予想される動作を示さないコードに関する問題がある場合は、**コードを投稿してください。 – nvoigt
私が言ったように、私はThread.Sleep()を使っていました。私のコードは〜のように見えました(n = 0; n <= m; n ++) { //データを表示します。 Thread.Sleep(30000); } –