定時器在.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來寫你自己的遊戲。還有'定時器'類,這可能會幫助你。 – Jannik
沒有*任何*表示*如何*你等待30秒,你期望我們知道什麼是錯的?如果您在代碼中沒有顯示預期行爲方面的問題,請發佈代碼**。 – nvoigt
正如我所說我在那裏使用了Thread.Sleep()。我的代碼看起來像 - for(n = 0; n <= m; n ++) {show data; Thread.Sleep(30000); } –