【发布时间】:2019-09-25 16:38:23
【问题描述】:
我在 C#/WPF 中构建了一个相当简单的应用程序,它查找、复制代表每个月的单独文件夹中的 txt 文件,然后将它们打包到一个大 txt 文件中,但每个月的每个月文件夹中。
10000等文件很多,每个月的txt文件可以达到1.5GB左右,所以需要25分钟左右才能完成。
这两个步骤是分开的,复制到适当的月份文件夹,然后第二步是每个月打包一个txt文件。
我希望能够在其他繁重的任务中自动执行这些步骤,例如运行检查数据完整性的 Access 2000 宏(也需要 20 分钟才能完成)、按顺序运行 TSQL 存储过程(需要 20 分钟才能完成)。我开始在 Powershell 脚本中执行此操作。
我可以构建另一个包含复制和打包步骤的控制台应用程序,并按意愿运行这些步骤,但它应该是单独的应用程序吗? 我也可以将 WPF 应用程序用作控制台应用程序吗? 或者构建一个库应用程序并在单独的 WPF 和控制台应用程序中使用它?
【问题讨论】:
-
我会将所有共享逻辑放在 WPF 应用程序和控制台应用程序都使用的程序集中。
-
我肯定会按照@EdPlunkett 的建议去做,并将它们分成单独的程序集。由于它可能需要很长时间才能运行,因此您可以更进一步并在无头实现上添加某种外部接口,例如 gRPC,并让 UI 连接到该接口以获取状态。
-
也许这应该在 Windows 服务中完成工作。从输入消息队列中读取,将任务传递给它。将结果输出到另一个消息队列。然后可以使用 WPF 前端来添加任务并报告结果。
-
还有各种类似 cron 的应用程序——人们为 windows 或只是 windows 任务调度器编写的应用程序。
标签: c# wpf console-application