手机
当前位置:查字典教程网 >编程开发 >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#图片压缩的实现方法

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

c# 二分查找算法

C# 语音功能的实现方法

c#创建Graphics对象的三种方法

C#中using的三种用法

WinForm子窗体访问父窗体控件的实现方法

用.NET创建Windows服务的方法第1/2页

c# 托盘双击不触发单击事件的实现方法

C# dynamic关键字的使用方法

精品推荐
分类导航