【发布时间】:2014-10-07 10:48:03
【问题描述】:
我在 Async/Await 函数中有一部分代码,我希望一次只执行一个线程。
通过创建一个新的 SemaphoreSlim(1) 并使用 WaitAsync/Release,这相对简单。效果是第一个线程执行,其他线程等待,然后一个接一个地执行。
我想要达到的效果实际上略有不同。我希望其他线程不要等待,而是从函数中返回(即我不想阻塞其他线程)。因此,如果有一个属性“NumberOfThreadsCurrentlyExecuting”,我实际上会有一个 If Semaphore.NumberOfThreadsCurrentlyExecuting > 0 Then Return。
但是这样的属性不存在。有没有人知道解决这个问题的方法?
谢谢 查尔斯
【问题讨论】:
-
检查CurrentCount?
-
对。愚蠢的问题。对不起!我知道 CurrentCount 指的是最大线程数而不是剩余线程数。
-
并意识到我的错误来自哪里:VS 中 CurrentCount 的工具提示说“获取允许进入 System.Threading.SemaphoreSlim 的线程数”,这是模棱两可的(我解释最大)。
标签: c# vb.net multithreading