TAP示例中的无限while循环
本文关键字:无限 while 循环 TAP | 更新日期: 2023-09-27 18:02:33
在研究TAP(基于任务的异步模式)时,我在这个MSDN网页上发现了这个示例片段。
private static AsyncProducerConsumerCollection<int> m_data = …;
…
private static async Task ConsumerAsync()
{
while(true)
{
int nextItem = await m_data.Take();
ProcessNextItem(nextItem);
}
}
…
private static void Produce(int data)
{
m_data.Add(data);
}
我不认为这是有意义的,因为这真的是一个没有出路的无限循环。我错过什么了吗?如果有的话,请解释一下它是如何工作的。
编辑:我得到了示例的范围,该函数试图处理项目,直到它用完。我也得到Task
和Task<void>
是一样的,也就是说,这个函数不需要返回任何东西。但事实上,它有一个while(true)
困扰我,因为这意味着这个函数永远运行。这是否意味着由调用函数来终止应用程序?这部分的细节我不太清楚。
如果您想以TAP方式中断循环,您可以使用CancellationTokenSource并调用Cancel
来中断循环。你可以在你发布的原始链接和我在这里添加的CancellationTokenSource
的MSDN页面上阅读更多关于它的内容。