c# - 循环遍历 TPL 数据流块的正确方法是什么?
问题描述
我在某处读到 TPL Dataflow 块可以循环,但我还没有看到一个明确的例子来说明如何做到这一点。我的想法如下,但我不确定我是否违反了一些规则,或者是否有更好的方法?
1)我将使用“作业”对象填充并发作业队列(对象将具有命令列表,循环值)
2)队列将作业发送到转换块,该块将查看第一个命令应该是什么,并使用广播块向所有其他转换块发送消息
3)如果链接到广播块的转换块看到消息是针对它的,它将对作业对象进行转换。完成后,它将链接到第二个广播块。
4) 第二个广播块将发送一条消息,该消息将被其他块用于更新 GUI,并更新日志文件
5)第二个广播块也将向转换块发送消息,其唯一目的是检查作业对象以查看其列表中是否还有任何命令。如果是这样,这个块将把作业对象重新添加到主作业队列中,但不会在它用下一个命令替换它刚刚完成的命令之前。作业对象还可以具有循环计数器属性,该属性在作业重新添加到队列之前会递减。
换句话说,我想在现实生活中做什么:我有一个 XML 文件(作业对象),其中包含测试参数,包括要运行哪些测试以及应该重复多少次测试(如果有的话)。测试站可以在 1 到 16 个独立单元上运行测试,每个单元运行自己独特的测试。我选择 TPL 数据流方法是因为这些测试都需要能够在单独的线程上同时运行,并且单元可以由异步人员交换进出。动作/命令相当简单;一个是运行一堆测量,另一个动作是将测试单元加热到特定温度'x'分钟,一个断电命令(仅针对特定单元,而不是所有单元),等等上。加热任务只是一个命令,然后是漫长的等待,它什么也不做。
** 示例工作(在不同的日子开始)**
单元 7:测量,加热 30 分钟,测量,断电
单元 10:测量,加热 500 分钟,重复这两个命令 10 次,断电(循环结束)
单元 3:测量,断电
单元5:每30分钟测量1天,加热7天,测量,掉电。
解决方案
推荐阅读
- javascript - 在另一个图像上添加图像作为按钮
- php - 在 curl 中使用变量
- reactjs - 带有 es6 模块的基本应用程序无法正常工作 chrome - ERR_ABORTED 404(未找到)
- python - 词表生成器:排列内排列
- python - 在使用 Pylint 的“def”之后,多个空格没有错误的空格警告?
- c# - 如何使我的应用程序的特定文件夹出现在图库中?
- swift - TextField .textContentType 修饰符在 SwiftUI 中无效
- php - 循环来自 API 的大量数据并导入 WordPress 的最有效方法?
- node.js - 如何解决“TypeError:process.getuid 不是函数”
- c# - 如何在 c# 中优化我的 zip 函数以更快?