【发布时间】:2021-10-10 08:18:53
【问题描述】:
这是我的代码
SemaphoreSlim slim = new SemaphoreSlim(1);
_ = Task.Run(() =>
{
Task.Delay(2000);
_testOutputHelper.WriteLine("Unleash!");
slim.Release();
});
_testOutputHelper.WriteLine("Waiting");
await slim.WaitAsync();
_testOutputHelper.WriteLine("Done");
输出讽刺如下:
Waiting
Unleash!
Done
AFAIK WaitAsync() 假设允许线程,因为我已将初始计数设置为 1。不知何故,它的行为不是那样
有什么帮助吗?
【问题讨论】:
-
而不是
_testOutputHelper.WriteLine=>Console.WriteLine,这样你的例子就可以被大家编译测试了。 -
在单元测试中运行
标签: c# async-await concurrency semaphore