|
|
@ -143,6 +143,53 @@ namespace Apewer |
|
|
|
|
|
|
|
|
#endregion
|
|
|
#endregion
|
|
|
|
|
|
|
|
|
|
|
|
#region 线程锁
|
|
|
|
|
|
|
|
|
|
|
|
static Int32Locker _int32_locker = new Int32Locker(); |
|
|
|
|
|
static Int64Locker _int64_locker = new Int64Locker(); |
|
|
|
|
|
|
|
|
|
|
|
/// <summary>锁定数值,在锁中执行函数。</summary>
|
|
|
|
|
|
/// <param name="value">要锁定的文本。</param>
|
|
|
|
|
|
/// <param name="inLock">要在锁中执行的函数。</param>
|
|
|
|
|
|
/// <exception cref="ArgumentNullException"></exception>
|
|
|
|
|
|
public static T Lock<T>(this int value, Func<T> inLock) |
|
|
|
|
|
{ |
|
|
|
|
|
if (inLock == null) throw new ArgumentNullException(nameof(inLock)); |
|
|
|
|
|
return _int32_locker.InLock(value, inLock); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
/// <summary>锁定文本,在锁中执行函数。</summary>
|
|
|
|
|
|
/// <param name="value">要锁定的文本。</param>
|
|
|
|
|
|
/// <param name="inLock">要在锁中执行的函数。</param>
|
|
|
|
|
|
/// <exception cref="ArgumentNullException"></exception>
|
|
|
|
|
|
public static void Lock(this int value, Action inLock) |
|
|
|
|
|
{ |
|
|
|
|
|
if (inLock == null) throw new ArgumentNullException(nameof(inLock)); |
|
|
|
|
|
_int32_locker.InLock(value, inLock); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
/// <summary>锁定数值,在锁中执行函数。</summary>
|
|
|
|
|
|
/// <param name="value">要锁定的文本。</param>
|
|
|
|
|
|
/// <param name="inLock">要在锁中执行的函数。</param>
|
|
|
|
|
|
/// <exception cref="ArgumentNullException"></exception>
|
|
|
|
|
|
public static T Lock<T>(this long value, Func<T> inLock) |
|
|
|
|
|
{ |
|
|
|
|
|
if (inLock == null) throw new ArgumentNullException(nameof(inLock)); |
|
|
|
|
|
return _int64_locker.InLock(value, inLock); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
/// <summary>锁定文本,在锁中执行函数。</summary>
|
|
|
|
|
|
/// <param name="value">要锁定的文本。</param>
|
|
|
|
|
|
/// <param name="inLock">要在锁中执行的函数。</param>
|
|
|
|
|
|
/// <exception cref="ArgumentNullException"></exception>
|
|
|
|
|
|
public static void Lock(this long value, Action inLock) |
|
|
|
|
|
{ |
|
|
|
|
|
if (inLock == null) throw new ArgumentNullException(nameof(inLock)); |
|
|
|
|
|
_int64_locker.InLock(value, inLock); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
|
#region Restrict 约束值范围。
|
|
|
#region Restrict 约束值范围。
|
|
|
|
|
|
|
|
|
/// <summary>约束值范围,若源值不在范围中,则修改为接近的值。</summary>
|
|
|
/// <summary>约束值范围,若源值不在范围中,则修改为接近的值。</summary>
|
|
|
|