lockhelper.cs
来自「破解的飞信源代码」· CS 代码 · 共 37 行
CS
37 行
namespace NCindy.Util
{
using System;
using System.Threading;
public static class LockHelper
{
public static ValueTypeWrapper<LockCookie> SafeAcquireWriterLock(ReaderWriterLock readerWriterlock, int timeout)
{
ValueTypeWrapper<LockCookie> empty = ValueTypeWrapper<LockCookie>.Empty;
if (readerWriterlock.IsReaderLockHeld && !readerWriterlock.IsWriterLockHeld)
{
return new ValueTypeWrapper<LockCookie>(readerWriterlock.UpgradeToWriterLock(timeout));
}
readerWriterlock.AcquireWriterLock(timeout);
return empty;
}
public static void SafeReleaseWriterLock(ReaderWriterLock readerWriterlock, ValueTypeWrapper<LockCookie> lockCookie)
{
if (readerWriterlock.IsWriterLockHeld)
{
if (ValueTypeWrapper<LockCookie>.Empty == lockCookie)
{
readerWriterlock.ReleaseWriterLock();
}
else
{
LockCookie cookie = lockCookie.Value;
readerWriterlock.DowngradeFromWriterLock(ref cookie);
}
}
}
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?