【发布时间】:2020-11-21 08:38:48
【问题描述】:
我有一个进程每两分钟运行一次并执行该方法。
有时,该过程需要两分钟以上。在这种情况下,我希望进程等到进程完成。
我的代码如下所示。我尝试了锁定,监视器,但由于异步等待而没有工作。我收到此错误 SynchronizationLockException on Monitor.Exit when using await
public async Task RunProcess()
{
await GetRecords();
await CheckDuplicates();
await InsertRecords();
}
实现这一点的最佳做法是什么?
【问题讨论】:
-
确保你调用的方法也是异步的
-
如果这个进程每隔几分钟运行一次,为什么还要使用异步呢?完全同步 abd 然后锁定将起作用。如果此进程是 en exe,则使用监视器将无济于事,因为它的范围是整个进程
-
@BrootsWaymb 我完全不明白这个答案
-
@Chatra - 哪一部分?您是否查看了最佳答案提到的 SemaphoreSlim 类?
标签: c# multithreading locking