我们有一个无人值守的应用程序没有定期运行的用户界面。
这是一个VB.NET应用程序。它不是作为服务或无形Windows应用程序开发,而是使用表单开发,所有代码都放在form_load逻辑中,“END”语句作为终止程序的最后一行代码。 / p>
除了生成使用不需要的Windows表单资源的程序之外,是否有令人信服的理由将这些代码发送回来进行返工以将启动逻辑放在BAS文件的MAIN子中?
如果程序要进入和退出混合(而不是连续运行)是否有任何意义使其成为服务?
如果应用程序是使用Form开发的,我是否必须担心会出现一个对话框,即使应用程序中没有MessageBox命令,也没有人会响应?
我记得在VB6中曾经有过这样的东西,你可以将应用程序检查为无人值守的运行,大概是为了避免对话。
答案 0 :(得分:4)
我不知道是否存在无法运行的情况。
但是,如果代码是由某人提供的,那么您将继续工作,我认为这是一个帮助他们理解最佳实践的机会(这不是),并帮助他们理解您期望的最佳实践 - 练习代码。
答案 1 :(得分:3)
首先,您不需要在表单中运行它。 表格适用于演示文稿,所以不应该在那里完成。
如果您不想将应用程序转换为服务(既不困难,也不容易),您应该创建一个控制台应用程序,然后使用Windows任务计划程序安排它。
这样,您可以使用Main函数创建一个控制台应用程序,它可以完全满足您的需要。
无论如何,程序员可以显示窗口,所以不应该有任何消息框。任何通信都应该通过Logging to:local files,windows events,database。
完成如果您想了解更多关于它们的信息,请问我。
答案 2 :(得分:1)
如果您不希望它成为一项服务,则没有任何内容表明它必须是Windows服务。安排它通过任务计划程序或类似的东西运行是一个有效的选项。
但是,听起来开发人员应该选择“控制台应用”项目,而不是“Windows窗体”项目来创建此应用。
答案 3 :(得分:0)
寄回。该应用程序比它需要的更庞大和更慢,尽管这不会是一个大问题。它更有可能耗尽资源。但主要原因是:将其转换为控制台应用程序非常容易。
答案 4 :(得分:0)
如果您不希望弹出控制台窗口,只需执行以下操作即可。
创建一个新类“Program.vb”,添加一个公共共享Main()方法,并将“OnLoad”逻辑从表单移动到此方法。
接下来删除表单,并更改项目启动对象(在项目属性窗口中可用)以使用Program.Main而不是Form。
如果没有使用Windows窗体资源,这将产生相同的效果。然后,您可以删除对System.Windows.Form和System.Drawing的引用。