lock或monitor等语句块中不能使用await,否则会System.Threading.SynchronizationLockException异常,如以下场景:
lock(xxx)
{
await GetXXXAysnc()
}
可考虑使用semphoreslim代替,具体使用方式如下:
if(await _mySemphoreSlim.WaitAsync())
{
try
{
await GetXXXAsync();
}
finally
{
_mySemphoreSlim.Release();
}
}
C#中lock语句块使用await的问题及解决
博客指出在C#里,lock或monitor语句块中使用await会抛出System.Threading.SynchronizationLockException异常,如给出的代码示例。同时给出解决办法,可使用semphoreslim代替,并展示了具体使用方式。
1020

被折叠的 条评论
为什么被折叠?



