using System; using System.Collections.Generic; using System.Linq; using System.Numerics; using System.Text; using System.Threading.Tasks; namespace ServerCore; public static class SynchronizerHelper { public static async Task tryReadLockAsync(this ReaderWriterLockSlim rwLock) { ArgumentNullReferenceCheckHelper.throwIfNull(rwLock, () => $"rwLock is null !!!"); return await Task.Run(() => { rwLock.EnterReadLock(); return (IDisposable) new Unlocker(rwLock, false); }); } public static async Task tryWriteLockAsync(this ReaderWriterLockSlim rwLock) { ArgumentNullReferenceCheckHelper.throwIfNull(rwLock, () => $"rwLock is null !!!"); return await Task.Run(() => { rwLock.EnterWriteLock(); return (IDisposable) new Unlocker(rwLock, true); }); } }