2010-07-08 198 views
1

我有一個過程,可以卡住在一個無限循環,我想添加一個5秒的超時,所以它不會永遠掛起。設置超時?

bool FlagSuccess = false; 
while (FlagSuccess == false) 
{ 
    try 
    { 
    //Blah blah blah 
    FlagSuccess=true; 
    } 
    catch 
    { 
    } 
} 
+1

也許最好是修復循環? – 2010-07-08 15:27:58

+0

修復循環?我很樂意,請進一步解釋。 – sooprise 2010-07-08 15:36:36

回答

2

這是我試圖避免的構造。但是,如果您必須:

bool FlagSuccess = false; 
DateTime timeout = DateTime.UtcNow.AddSeconds(5); 
while (FlagSuccess == false && DateTime.UtcNow < timeout) 
{ 
    try 
    { 
    //Blah blah blah 
    FlagSuccess=true; 
    } 
    catch 
    { 
    } 
} 
+0

你需要改變它添加5秒,而不是5分 – w69rdy 2010-07-08 15:29:03

+0

我願意嘗試不同的事情。你會推薦我使用什麼類型的構造? 我對C#很陌生,很多代碼只是在黑暗中摸索着。我很高興能夠學習更多「標準友好」的代碼實踐,而我仍然是綠色的。 – sooprise 2010-07-08 15:32:25

+0

我會把它改成'DateTime.UtcNow',否則你可能會冒風險,要麼根本不旋轉循環(真的很糟糕),要麼旋轉超過一個小時(稍微差一點)。 – 2010-07-08 15:44:00