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);
}

我不认为这是有意义的,因为这真的是一个没有出路的无限循环。我错过什么了吗?如果有的话,请解释一下它是如何工作的。

编辑:我得到了示例的范围,该函数试图处理项目,直到它用完。我也得到TaskTask<void>是一样的,也就是说,这个函数不需要返回任何东西。但事实上,它有一个while(true)困扰我,因为这意味着这个函数永远运行。这是否意味着由调用函数来终止应用程序?这部分的细节我不太清楚。

TAP示例中的无限while循环

如果您想以TAP方式中断循环,您可以使用CancellationTokenSource并调用Cancel来中断循环。你可以在你发布的原始链接和我在这里添加的CancellationTokenSource的MSDN页面上阅读更多关于它的内容。