【发布时间】:2021-12-31 06:49:27
【问题描述】:
我的 C# 程序中有多个线程。现在他们在运行时偶尔调用一个特定的函数。现在我想确保他们永远不会同时执行那个特定的函数(因为它会导致我的程序出现一些异常),对函数的一次调用必须在下一次调用开始之前完成。 (很像一个队列)。
有可能做到这一点吗? (不必须成为函数)。
如果有些人看不懂,这里是一张图表:
【问题讨论】:
-
只需将您的函数调用包装到
lock语句 (docs.microsoft.com/en-us/dotnet/csharp/language-reference/…) 中。或者只是在函数内部添加一个lock。 -
我会实施并通知您!
-
非常感谢,它有效! (您可以将其写为答案,以便我将其标记为正确的答案)。
-
你可能会觉得这个问题很有趣:What does a lock statement do under the hood?
-
了解更多关于您的程序会很有趣,因为 Microsoft 的反应式框架可能是一个很好的解决方案,具体取决于您的架构。
标签: c# multithreading