private void ChangeStatus(AsyncLockStatus newStatus, AsyncLockStatus[] expectedPreviousStatuses) { var prevstatus = Interlocked.Exchange(ref _status, (int)newStatus); if (!expectedPreviousStatuses.Contains((AsyncLockStatus)prevstatus)) { throw new InvalidOperationException($"Previous {nameof(AsyncLock)} state was unexpected: prev:{((AsyncLockStatus)prevstatus).ToString()} now:{((AsyncLockStatus)_status).ToString()}."); } }
private void ChangeStatus(AsyncLockStatus newStatus, AsyncLockStatus expectedPreviousStatus) { ChangeStatus(newStatus, new[] { expectedPreviousStatus }); }