private void OnQueueItemFinished(MyLockQueueItem queueItem) { MyLockQueueItem nextToStart = null; lock (_lock) { if (_queue.FirstOrDefault() == queueItem) { _queue.RemoveAt(0); nextToStart = _queue.FirstOrDefault(); } else { // This probably shouldn't happen, but just in case... _queue.Remove(queueItem); } } nextToStart?.EnterLock(); }
public MyDisposableLock(MyLockQueueItem queueItem) { _queueItem = queueItem; }