【发布时间】:2015-11-11 11:22:26
【问题描述】:
好吧,我知道我的问题需要更多的指导而不是技术问题,但我希望 SO 成员不会介意 TPL Dataflow 的新手提出一些非常基本的问题。
我有一个简单的 Windows 窗体应用程序,它负责从我系统上的 Excel 文件中提取数据并将它们保存在数据库中。这个过程太长了,我想让它异步和并行。以下是我的方案的简介。
调用函数在开始时打开与数据库的连接
调用函数以使用操作时间更新数据库
假设应用程序需要处理 100 个递增顺序的 Excel 文件。为此,我使用了每次调用都会递增的 FileNumber。
对UpdateUI的调用函数(传递PageNumber)(示例。文件1处理)
调用函数读取 Excel 文件(PageNumber 被传递)
调用函数处理Excel文件数据(传Excel数据,传PageNumber)
调用函数将值保存在数据库中(传递Excel数据并传递PageNumber)
UpdateUI 的调用函数(PageNumber 已传递)(示例。文件 1 已处理)
现在我所取得的成就是我能够使用任务使这个过程异步。我已将 async 和 await 用于所有长时间运行的操作,并将我的函数转换为 Tasks。
现在我想让一些任务并行运行。并非每个任务都是并行的,例如 OpenDatabase 连接将只是异步的。但我想创建一个任务或函数,它将为我的应用程序中的每个任务/函数使用数据流块,从更新 UI 到 ReadingExcel 文件并将它们保存到数据库中。
我开始使用 ActionBlock 来尝试这个,但是有很多我一无所知的不同的块。请指导我在这种情况下将使用哪个块。如果有人为这种情况提供伪代码,那将是非常棒的。我将有一些事情开始。
【问题讨论】:
标签: c# task-parallel-library tpl-dataflow