lock或monitor等语句块中不能使用await,否则会System.Threading.SynchronizationLockException异常,如以下场景:
lock(xxx)
{
await GetXXXAysnc()
}
可考虑使用semphoreslim代替,具体使用方式如下:
if(await _mySemphoreSlim.WaitAsync())
{
try
{
await GetXXXAsync();
}
finally
{
_mySemphoreSlim.Release();
}
}