У меня есть нить. В какой-то момент я хочу проверить, свободен ли какой-то замок. Если это бесплатно, я хочу, чтобы поток продолжался по-своему. Если он не является бесплатным, я хочу подождать, пока он станет бесплатным, но на самом деле не приобретет блокировку.Подождите, пока выйдет замок.
Вот мой код до сих пор:
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
@ dizel3d Это другая операция. Определение того, свободен ли замок, отличается от ожидания до его освобождения без приобретения блокировки. – Servy
Если ваш примерный код является репрезентативным для вашей реальной проблемы, вы можете просто «Подождать» задачи, возвращенной 'SlowMethod'. –