C#任务完成源

时间:2019-04-02 16:55:35

标签: c# task-parallel-library taskcompletionsource

我对问题陈述的要求是这样的,例如,当事件被触发时,我必须使用异步和等待来调用任务完成源。将发生多个事件,并且每次事件发生时,都必须调用此任务完成。 (还会有多个任务正在发生,并提高了任务的完成率)

例如说有几何形状和与这些形状相对应的空白区域。将这些对象形状放置在此空间中时,将触发一个事件,从而引发任务完成的来源。

因此,要实现一个使用任务完成源的程序,它基于发生的事件,依赖注入,系统事件/通知以及检查事件是否完成(对于多个事件)。

希望我对要求很清楚,但是由于问题陈述并不棘手,因为它涉及很多TPL异步概念,我尽力解释,因此可以与上述形状博弈类比。

任何有用的建议/链接/建议都会很棒。

在此先感谢!!! ..

1 个答案:

答案 0 :(得分:0)

任务完成源只能完成一次。 对于您的情况,这听起来不像是正确的解决方案。看一下SemaphoreSlim,它支持异步并且与线程无关。每次发生事件(将形状放置在空间中)时,它将使您释放等待线程(WaitAsync)。

https://docs.microsoft.com/en-us/dotnet/api/system.threading.semaphoreslim?view=netframework-4.7.2