【发布时间】:2023-03-15 21:25:01
【问题描述】:
我们有一个用 C# 目标框架 2.0 编写的旧库。最近我们打算在一个现代.net核心项目中使用它,并打算使用async/await。但是,旧库有很多 lock 块。
我们计划添加新的async 方法来实现相同的逻辑。
例如,
旧代码
void GetOrder()
{
// ...
lock(_lock)
{
//...
}
}
预期结果
async Task AsyncGetOrder()
{
// ...
await DoSomethingWithLock()
}
请给我一些关于如何将lock 翻译成async/await 的建议。
【问题讨论】:
-
Async/Await 不是锁定的替代方案。
-
SemaphoreSlim() -
您是否在寻求一种在异步方法中提供线程安全的方法?
-
您是要重写旧库,还是打算按原样使用它?
-
@TheodorZoulias @Llama 我正在尝试实现相同的逻辑。我听说
async和lock不应该一起工作。
标签: c# async-await thread-synchronization