private bool TrySetTaskStatus(VSConstants.VsSearchTaskStatus value, VSConstants.VsSearchTaskStatus comparand) { var v = (long)value; var c = (long)comparand; return(Interlocked.CompareExchange(ref _taskStatus, v, c) == c); }
private bool SetTaskStatus(VSConstants.VsSearchTaskStatus status) { if (status == Started && !TrySetTaskStatus(status, Created)) { return(false); } if (status == Stopped && !TrySetTaskStatus(status, Started) && !TrySetTaskStatus(status, Created)) { return(false); } if ((status == Completed || status == Error) && !TrySetTaskStatus(status, Started)) { return(false); } return(_taskStatus != (long)Stopped); }