Example #1
0
        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);
        }
Example #2
0
        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);
        }