我正在做的一個項目中的很多領域都有一個簡單的超時檢查,它基本上通過try循環運行代碼,直到成功或經過10秒。感興趣的關於我的超時類
class Timeout {
private readonly DateTime timeoutDate;
public bool FlagSuccess;
public Timeout() {
timeoutDate = DateTime.UtcNow.AddSeconds(10);
flagSuccess = false;
}
public bool continueRunning() {
if (!flagSuccess && DateTime.UtcNow < timeoutDate) return true;
else return false;
}
}
這裏是使用類的一個示例:
Timeout t = new Timeout();
while (t.continueRunning()) {
try {
//PUT CODE HERE
t.flagSuccess = true;
}
catch(Exception e) {
Console.WriteLine(e.Message);
}
}
我實現了在此之前,有沒有更好的,更標準的方式來做到這一點?我上面的內容是基於我的盲目直覺。
如果您的代碼是一個耗時的函數,那麼您在while語句中的檢查不會(或者至少在它所需的所有時間)被評估,並且您的計時器相當無意義。 – 2011-02-08 20:04:01
沒關係。至少將超時值傳遞給構造函數。 – 2011-02-08 20:13:26