如果您实际需要控制台界面,则需要控制台应用程序的唯一原因是。听起来不像是这种情况 - 界面将用WinForms编写。因此,您实际上并不需要两个单独的应用程序。您可以将所有必要的功能合并到一个可执行文件中。
做到这一点的方法是检查命令行参数指出该应用是否应该交互方式或无头运行。可能,您要做的就是在传递否命令行参数时交互式运行应用程序。这将是正常情况,用户在双击应用程序以从资源管理器启动它时遇到的情况。
当谈到时间来安排您的应用程序在后台运行一个任务(任务计划程序或其他任何东西),你通过传递一个特殊的命令行参数,您的应用程序信号这一点。您可以决定这是什么,如果您的应用可以在后台执行多项操作,您可能需要其中的几个。如果需要(或可以)将配置信息/参数传递给应用程序以配置应执行后台任务的方式,则也可以在命令行上传递这些信息/参数。或者,正如您在问题中提到的那样,您可以从上次运行应用程序交互版本时由用户设置/保存的任何设置中提取这些设置。
诀窍只是checking for these command-line parameters in your application's Main
method。在我提出的设计中,如果没有指定任何命令行参数,那么您只需像往常一样创建主窗体。如果有是命令行参数,那么您需要解析它们以查看正在请求的操作。一旦你解析了它们并确定了哪个后台任务应该运行,那么你只需运行该后台任务 - 而不需要创建/显示表单。
有lots of different solutions用于解析命令行参数。使用库可能是最简单的方法,并且也给你最多的功能。但是如果你只需要一些简单的模式,就像/background
模式一样,那么你可以很容易地为自己编写代码,而不需要依赖库或者需要学习如何使用它。
所以,你可以做到这一切有一个项目在一个单一的解决方案,如果你想。或者,您可以将功能的不同方面划分到编译为库的不同项目中(,例如,DLL),但为简单起见,仍然只有一个可执行文件。
非常感谢您提供所有这些详细信息。你给了我很多很好的东西来研究,它简化了我想要做的很多事情。能够将我的所有程序保存在一个应用程序中,将为我节省大量时间和头痛。 –