DataBase/ClsLock.cs
(开头部分) 4KB这里只显示每个文件的开头 60 行。登录后可以解锁完整代码。
using System;
using System.Threading;
namespace XStart.DataBase {
/// <summary>
/// 使用using代替lock操作的对象,可指定写入和读取锁定模式
/// </summary>
public sealed class ClsLock {
#region 内部类
/// <summary>
/// 利用IDisposable的using语法糖方便的释放锁定操作内部类
/// </summary>
private readonly struct Lock : IDisposable {
/// <summary>
/// 读写锁对象
/// </summary>
private readonly ReaderWriterLockSlim _lock;
/// <summary>
/// 是否为写入模式
/// </summary>
private readonly bool _isWrite;
/// <summary>
/// 利用IDisposable的using语法糖方便的释放锁定操作构造函数
/// </summary>
/// <param name="rwl">读写锁</param>
/// <param name="isWrite">写入模式为true,读取模式为false</param>
public Lock(ReaderWriterLockSlim rwl, bool isWrite) {
_lock = rwl;
_isWrite = isWrite;
}
/// <summary>
/// 释放对象时退出指定锁定模式
/// </summary>
public void Dispose() {
if (_isWrite) {
if (_lock.IsWriteLockHeld) {
_lock.ExitWriteLock();
}
} else {
if (_lock.IsReadLockHeld) {
_lock.ExitReadLock();
}
}
}
}
/// <summary>
/// 空的可释放对象,免去了调用时需要判断是否为null的问题内部类
/// </summary>
private class Disposable : IDisposable {
/// <summary>
/// 空的可释放对象
/// </summary>
public static readonly Disposable Empty = new Disposable();
/// <summary>
/// 空的释放方法
/// </summary>
public void Dispose() { }
}
后面还有 53 行代码,解锁后查看完整代码
24 小时内免费解锁 3 个项目,之后 1 积分/个。 规则说明
AI 解读
登录后可用,每次 10 积分,解读结果公开显示在下面。
还没有人解读过这个文件。
