我有一個線程。在某個時刻,我想要做的是檢查某個鎖是否可用。如果它是免費的,我希望線程繼續其快樂的方式。如果它不是免費的,我想等到它是免費的,但實際上並沒有獲得鎖定。等待鎖定被釋放
這是到目前爲止我的代碼:
private object LockObject = new Object();
async void SlowMethod() {
lock (LockObject) {
// lotsa stuff
}
}
void AppStartup() {
this.SlowMethod();
UIThreadStartupStuff();
// now, I want to wait on the lock. I don't know where/how the results
// of SlowMethod might be needed. But I do know that they will be needed.
// And I don't want to check the lock every time.
}
見http://stackoverflow.com/questions/12033725/c-sharp-how-to-detect-an-object-is-already-locked – dizel3d 2014-09-26 20:29:05
@ dizel3d這是一個不同的操作。確定鎖是否空閒與等待空閒而不獲取鎖是不同的。 – Servy 2014-09-26 20:30:30
如果您的示例代碼代表您的真實問題,那麼您可以對'SlowMethod'返回的任務執行「等待」。 – 2014-09-26 20:37:15