【问题标题】:Should I develop a console application along the WPF application?我应该沿着 WPF 应用程序开发控制台应用程序吗?
【发布时间】: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


【解决方案1】:

您也可以将 WPF 应用程序用作纯控制台应用程序。

你可以这样做:当你从命令行调用 EXE 时,然后添加一个参数,例如/c 用于“控制台”或类似名称。然后,在您的应用程序的main 函数中,查找该参数,设置好后,作为控制台应用程序继续,不要创建任何窗口。

【讨论】:

  • 是的,这似乎是合理的。但需要为每个控制台参数设置一个机制。顺便说一句,我在项目属性的调试选项卡中添加什么到命令行参数?如果不在项目的命令行参数中设置一些字母,它将无法编译。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-17
  • 1970-01-01
  • 1970-01-01
  • 2010-11-04
  • 1970-01-01
相关资源
最近更新 更多