Jon*_*len 1 .net c# task-parallel-library tpl-dataflow
鉴于此代码:
s_Batch = new BatchBlock<PerformanceRecord>(500);
s_Action = new ActionBlock<PerformanceRecord[]>(a => SendToDatabase(a));
s_Batch.LinkTo(s_Action);
Run Code Online (Sandbox Code Playgroud)
当我完成后,我需要打电话Complete()给每个街区吗?或者将完成s_Batch触发链接到它的块中的完整?
正如您的代码现在所示,您需要Complete单独调用所有块:
s_Batch.Complete();
await s_Batch.Completion;
s_Action.Complete();
await s_Action.Completion;
Run Code Online (Sandbox Code Playgroud)
但是,您可以DataflowLinkOptions在链接块时使用以请求完成传播:
s_Batch.LinkTo(s_Action, new DataflowLinkOptions {PropagateCompletion = true});
s_Batch.Complete();
await s_Batch.Completion;
Run Code Online (Sandbox Code Playgroud)
这会将完成和故障通知传播到链接的目标块(即s_Action).
| 归档时间: |
|
| 查看次数: |
778 次 |
| 最近记录: |