手机
当前位置:查字典教程网 >编程开发 >C#教程 >共享锁using范围的实现方法
共享锁using范围的实现方法
摘要:复制代码代码如下:///共享锁publicclassShareLock{ReaderWriterLockLock;IDisposablere...

复制代码 代码如下:

/// <summary>共享锁</summary>

public class ShareLock

{

ReaderWriterLock Lock;

IDisposable readLock, writeLock;

public IDisposable ReadLock { get { Lock.AcquireReaderLock(-1); return readLock; } }

public IDisposable WriteLock { get { Lock.AcquireWriterLock(-1); return writeLock; } }

public IDisposable UpgradeLock { get { return new UpgraderLocked(Lock); } }

/// <summary>释放所有锁</summary>

public void ReleaseLock() { Lock.ReleaseLock(); }

public ShareLock()

{

this.Lock = new ReaderWriterLock();

this.readLock = new Locked(Lock.ReleaseReaderLock);

this.writeLock = new Locked(Lock.ReleaseWriterLock);

}

class Locked : IDisposable

{

ThreadStart ReleaseLock;

public Locked(ThreadStart ReleaseLock) { this.ReleaseLock = ReleaseLock; }

public void Dispose() { this.ReleaseLock(); }

}

class UpgraderLocked : IDisposable

{

delegate void ReleaseLockHandler(ref LockCookie lockCookie);

ReleaseLockHandler ReleaseLock;

LockCookie Cookie;

public UpgraderLocked(ReaderWriterLock locker)

{

Cookie = locker.UpgradeToWriterLock(-1);

this.ReleaseLock = locker.DowngradeFromWriterLock;

}

public void Dispose() { this.ReleaseLock(ref Cookie); }

}

}

【共享锁using范围的实现方法】相关文章:

C# WinForm中Panel实现用鼠标操作滚动条的实例方法

C#中using的三种用法

基于XSLT调试的相关问题

C#最简单的关闭子窗体更新父窗体的实现方法

C# 将字节流转换为图片的实例方法

关于c#二叉树的实现

C#调用Java类的实现方法

利用多线程句柄设置鼠标忙碌状态的实现方法

c# 二分查找算法

将字符串转换成System.Drawing.Color类型的方法

精品推荐
分类导航