gpt4 book ai didi

c# - 取消数据流管道中的特定项目

转载 作者:太空狗 更新时间:2023-10-29 21:22:00 25 4
gpt4 key购买 nike

我正在构建一个数据流管道,其工作是处理大文件。每个文件都经过解析、分析和渲染;但是每个文件都可能采用不同的路径通过管道,具体取决于文件的类型。

此管道的用户界面包含要处理的文件列表,以及每个文件旁边的进度条和“取消”按钮(当然,还有一个用于将新文件添加到队列的按钮).当用户单击特定文件旁边的“取消”按钮时,我只想从管道中删除该文件。

不过我一定是遗漏了什么,因为我不知道该怎么做。我知道我可以取消整个 block ,但我不想那样做,我只想取消管道中的单个项目。那么,我错过了什么?

最佳答案

TPL Dataflow 不支持取消开箱即用的特定项目。

您可以通过使用匹配的 CancellationToken 在项目上创建包装器并将其发布到管道而不仅仅是文件来自己实现它。然后只需在每个 block 中添加代码,如果 token 被取消并且该项目将快速通过则忽略该文件:

var block = new ActionBlock<FileWrapper>(wrapper => 
{
if (wrapper.CancellationToken.IsCancelltionRequested)
{
return;
}

ProcessFile(wrapper.File);
});

这意味着您每个项目都有一个 token ,允许您定位单个项目。

关于c# - 取消数据流管道中的特定项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31348377/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com