C# Mutex 在异步方法中线程同步失效
Mutex 在异步方法中线程同步失效:
private readonly Mutex mutexInitialize = new Mutex(); public async Task<bool> Initialize() { mutexInitialize.WaitOne(); try { ... } finally { mutexInitialize.ReleaseMutex(); } } System.ApplicationException:“Object synchronization method was called from an unsynchronized block of code.”
改为以下代码后正常:
public async Task<bool> Initialize() { await semaphoreSlimInitialize.WaitAsync(); // 异步等待获取锁; try { .... } finally { semaphoreSlimInitialize.Release(); // 释放锁 } }
桂棹兮兰桨,击空明兮溯流光。