这更像是一个普遍的理论问题,因为这是我第一次开发应用程序时,我仍然坚持如何继续......
我在VS 2015中开发一个需要两种功能的报告应用程序。它需要有一个GUI,以便用户可以与之交互并创建报告,并且需要通过Windows任务计划程序安排这些报告。我计划在调度部分使用控制台应用程序。我的问题是,实现这个的最佳方法是什么?截至目前,我在一个解决方案中有两个独立的项目。这是考虑我的需求的最佳途径,还是有一个我不知道的更好的选择?我已经在网上搜索了一些但未能找到有效的解决方案。由于调度部分需要从Windows窗体应用程序中提取应用程序设置,因此它特别困难。
非常感谢任何帮助或指导。提前谢谢!
答案 0 :(得分:0)
您需要控制台应用程序的唯一原因是,如果您确实需要控制台界面。听起来并非如此 - 界面将用WinForms编写。因此,您实际上并不需要两个单独的应用程序。您可以将所有必要的功能组合在一个可执行文件中。
执行此操作的方法是检查命令行参数,以指示应用程序是以交互方式运行还是以无头方式运行。您可能希望做的是在 no 命令行参数传递时使应用程序以交互方式运行。这是正常情况,用户双击您的应用程序以从资源管理器启动它时会遇到这种情况。
当计划您的应用程序在后台运行任务时(使用任务计划程序或其他任何内容),您可以通过将特殊的命令行参数传递给您的应用程序来发出信号。您可以决定这是什么,如果您的应用可以在后台执行多项操作,则可能需要其中的几项。如果需要(或可以)将配置信息/参数传递给应用程序以配置它应如何执行后台任务,您也可以在命令行上传递这些信息/参数。或者,正如您在问题中提到的那样,您可以从上次运行应用程序交互式版本时用户设置/保存的内容中提取这些设置。
技巧只是checking for these command-line parameters in your application's Main
method。在我提出的设计中,如果没有指定命令行参数,那么你就可以像往常一样创建主窗体。如果是命令行参数,那么您需要解析它们以查看正在请求的操作。一旦您解析了它们并确定应该运行哪个后台任务,您只需运行该后台任务 - ,无需创建/显示表单。
有lots of different solutions用于解析命令行参数。使用库可能是最简单的方法,也为您提供最多的功能。但是如果你只需要一些非常简单的东西,比如/background
模式,那么你可以轻松地为此编写代码,而不需要依赖于库或需要学习如何使用它
因此,如果您愿意,可以在单个解决方案中使用单个项目完成所有这些操作。或者,您可以将功能的不同方面拆分为编译到库(例如,DLL)的不同项目,但为了简单起见,仍然只有一个可执行文件。