private void SignalComplete(bool canceled) { SetWorkItemState(canceled ? WorkItemState.Canceled : WorkItemState.Completed); lock (this) { // If someone is waiting then signal. if (null != _workItemCompleted) { _workItemCompleted.Set(); } } }