private void WriteSequencesPeriodically(MemoryMappedViewAccessor accessor, List <T> sequences) { foreach (var sequence in sequences) { _entityListToWrite.Enqueue(sequence); } if (_stateTimer != null) { _stateTimer.CancelToken = new CancellationToken(true); } _stateTimer = new PeriodicTaskFactory((task) => { lock (sync) { // var isOwnedMutex = LockKeyData.WaitOne(); LockKeyData.WaitOne(); WriteSequences(accessor); // if (isOwnedMutex) LockKeyData.ReleaseMutex(); } }, new TimeSpan(0, 0, 2), new TimeSpan(0, 0, 2)); _stateTimer.Start(); }
public virtual void Close() { Accessor.Dispose(); MemoryMappedFile.Dispose(); LockKeyData.Dispose(); }