public bool WaitAsync(AsyncSemaphoreCallback callback) { CommonUtility.AssertNotNull("callback", callback); lock (this.pendingWaits) { if (this.count > 0) { this.count--; } else { this.pendingWaits.Enqueue(callback); callback = null; } } if (callback != null) { callback(true); return(true); } return(false); }
public bool WaitAsync(AsyncSemaphoreCallback callback) { CommonUtility.AssertNotNull("callback", callback); lock (this.pendingWaits) { if (this.count > 0) { this.count--; } else { this.pendingWaits.Enqueue(callback); callback = null; } } if (callback != null) { callback(true); return true; } return false; }
public void Release() { AsyncSemaphoreCallback callback = null; lock (this.pendingWaits) { if (this.pendingWaits.Count > 0) { callback = this.pendingWaits.Dequeue(); } else { this.count++; } } if (callback != null) { callback(false); } }