我有一个在主线程上启动计时器的 Windows 服务。计时器的工作是将 xml 文件加载到内存,对值进行一些处理并将结果保存回文件。例如,处理可能需要 10 分钟。(让我们将此操作称为 A)
我还有一个线程通过 WCF 在更新 xml 文件的同一服务上生成。(让我们称之为操作B)
发生的情况是操作 A 正在运行,而操作 B 在操作 A 完成之前运行到完成。最终结果是操作 A 覆盖了操作 B 完成的所有工作。
所以我认为我需要做的是:
当操作 A 开始时,如果操作 B 正在运行,则等待操作 B 完成然后执行操作 A
当操作 B 启动时,如果操作 A 正在运行,则等待操作 A 完成然后执行操作 B
如果我能做到这一点,我认为我不会有问题。
我希望这是有道理的——我的等待理论是做到这一点的最好方法吗?我怎样才能在 c# 中做到这一点(或任何最好的方法)?
谢谢达摩