| | |
| | | protected readonly ReaderWriterLockSlim _lock; |
| | | |
| | | /// <summary> |
| | | /// 释放状态标志 |
| | | /// </summary> |
| | | protected bool _disposed = false; |
| | | |
| | | /// <summary> |
| | | /// 区域类型 |
| | | /// </summary> |
| | | public abstract string RegionType { get; } |
| | |
| | | { |
| | | Size = size; |
| | | _memory = new byte[size]; |
| | | _lock = new ReaderWriterLockSlim(); |
| | | _lock = new ReaderWriterLockSlim(LockRecursionPolicy.SupportsRecursion); |
| | | } |
| | | |
| | | /// <summary> |
| | |
| | | /// </summary> |
| | | public virtual void Write(ushort offset, byte[] data) |
| | | { |
| | | if (data == null) |
| | | throw new ArgumentNullException(nameof(data)); |
| | | |
| | | _lock.EnterWriteLock(); |
| | | try |
| | | { |
| | |
| | | /// <summary> |
| | | /// 释放资源 |
| | | /// </summary> |
| | | public virtual void Dispose() |
| | | public void Dispose() |
| | | { |
| | | _lock?.Dispose(); |
| | | Dispose(true); |
| | | GC.SuppressFinalize(this); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 释放资源 |
| | | /// </summary> |
| | | /// <param name="disposing">是否正在释放托管资源</param> |
| | | protected virtual void Dispose(bool disposing) |
| | | { |
| | | if (!_disposed) |
| | | { |
| | | if (disposing) |
| | | { |
| | | _lock?.Dispose(); |
| | | } |
| | | _disposed = true; |
| | | } |
| | | } |
| | | } |
| | | } |