public bool Signal(WorkItem workItem) { lock (this) { if (!_isTimedout) { _workItem = workItem; _isSignaled = true; _waitHandle.Set(); return true; } } return false; }