我有這樣的代碼做什麼,我想:等待一個結果,而不阻塞線程
TriggerSomeExternalProcess();
double secondsElapsed = 0;
DateTime startTime = DateTime.UtcNow;
double timeoutInSeconds = 10;
while (secondsElapsed < timeoutInSeconds) {
// TODO: this seems bad...
secondsElapsed = DateTime.UtcNow.Subtract(startTime).TotalSeconds;
}
CheckStatusOfExternalProcess();
目標是TriggerSomeExternalProcess
然後CheckStatusOfSomeExternalProcess
- 但過程相同的線程上運行,所以我不能做Thread.Sleep()
。這是一個不能等待的持續過程。
我覺得上面的while
循環是錯誤的 - 當你需要等待而不會阻塞你的線程時,你採用什麼模式?
從其中一個答案的評論複製粘貼 不幸的是我無法觸及ExternalProcess中的代碼。我正在寫一個測試,這些是我可以訪問的方法。我知道這是不理想的
可能的複製[異步等待任務以超時完成](http://stackoverflow.com/questions/4238345/asynchronously-wait-for-taskt-to-complete-with-timeout) –
正在使用Timer選項嗎? –
@PeterBons我想是這樣的......我現在要做一些研究如何在這種情況下使用它。 – SB2055