我有一个线程。在某个时刻,我想要做的是检查某个锁是否可用。如果它是免费的,我希望线程继续其快乐的方式。如果它不是免费的,我想等到它是免费的,但实际上并没有获得锁定。等待锁定被释放
这是到目前为止我的代码:
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