遍历TPL Dataflow块的正确方法是什么?

时间:2019-11-22 00:01:20

标签: c# loops task-parallel-library job-scheduling tpl-dataflow

我读过某处可以循环TPL Dataflow块的信息,但是我还没有看到一个清楚的例子说明如何处理此问题。我的想法如下,但是我不确定是否要违反一些规则,或者是否有更好的方法?

1)我将用'job'对象填充并发作业队列(该对象将具有命令列表,循环值)

2)队列将作业发送到转换块,该块将看到第一个命令应该是什么,并使用广播块向所有其他转换块发送消息

3)如果链接到广播块的转换块看到了要发送的消息,它将对作业对象进行转换。完成后,它将链接到第二个广播块。

4)第二个广播块将发送一条消息,其他块将使用该消息来更新GUI和更新日志文件

5)第二个广播块还将向转换块发送一条消息,其唯一目的是检查作业对象以查看列表中是否还有任何命令。如果是这样,则此块会将作业对象重新添加到主作业队列中,但不会在将其刚完成的命令替换为下一个命令之前添加。作业对象还可以具有循环计数器属性,该属性将在作业重新添加到队列之前递减。

换句话说,我想在现实生活中做什么:我有一个XML文件(作业对象),其中包含测试参数,包括要运行的测试以及应重复测试的次数(如果有的话)。测试站可以在1到16个独立的单元中的任何位置运行测试,每个单元都运行自己的唯一测试。我之所以选择TPL数据流方法,是因为所有这些测试都需要能够在单独的线程上同时运行,并且异步人员可以将单元换入和换出。动作/命令非常简单。一个是只执行一堆测量,另一个动作是将测试单元加热到特定温度达“ x”分钟,然后执行断电命令(仅针对特定单元,而不是所有单元),等等。上。加热任务只是一个命令,紧接着是漫长的等待,什么都不做。

**作业示例(从不同日期开始)**

第7单元:测量,加热30分钟,测量,关闭电源

第10单元:测量,加热500分钟,重复执行这两个命令10次,关闭电源(在循环结束时)

第3单元:测量,关闭电源

第5单元:每30分钟测量1天,加热7天,测量并关闭电源。

0 个答案:

没有答案