internal void Abort(ref int syncStatus)
{
lock (this)
{
switch (syncStatus)
{
case SyncStatus.Unlocked:
syncStatus = SyncStatus.Aborted;
break;
case SyncStatus.Locking:
syncStatus = SyncStatus.Aborted;
Monitor.PulseAll(this);
break;
case SyncStatus.LockOwner:
syncStatus = SyncStatus.AbortedLocked;
break;
case SyncStatus.RequestOwner:
ThreadPool.UnsafeQueueUserWorkItem(s_AbortWrapper, m_LockedRequest);
syncStatus = SyncStatus.AbortedLocked;
m_LockedRequest = null;
break;
}
}
}
// End of locking helper methods.