我对TPL Dataflow仍然相对较新,并且不能100%确定我是否正确使用它,或者我是否甚至想要使用它。
我尝试使用此库来帮助进行文件复制+文件上传。
基本上,我们的应用程序中处理文件的结构/过程如下:
1)最终用户将从磁盘中选择一堆文件,然后选择将它们导入我们的系统。
2)某些文件具有更高的优先级,而其他文件可以按照自己的进度完成。
3)这里导入一堆文件的过程是:
因此,我正在使用TransformBlock'
1-文件复制TransformBLock
我的理解是它使用在后台使用ThreadPool的TaskScheduler.Current。我想也许是一个自定义的TaskScheduler,可以动态生成一个新线程。此调度程序可用于更高优先级的文件复制块。
2- ServerTimestamp TransformBlock
3-UploadFIle TransformBlock
我面临的问题:
比如说我们在本地数据库中排队了5个文件请求。
File1中 文件2 文件3-V1 文件3-V2 file3的-V3
我们将所有5个请求发布/发送到第一个块。
如果File1,File2,File3-v1,File3-v3成功但File3-v2失败,我希望该块不会流到下一个ServerTimestamp块,因为它非常重要File3版本是完全的在继续之前复制,否则它将失灵。
但是这会导致如何正确地重试并将已经复制的其他4个文件移动到下一个块?
我不确定我是否正确构造这个或者TPL Dataflow是否支持我的用例。