我有一个C#应用程序,旨在使用Windows窗体运行,但现在需要作为计划任务运行。我遇到了这个问题,我认为这是因为它需要“无头”,因为它应该没有用户环境的概念。该程序已编写为无人值守运行,因为它有一个/ AUTO arg然后将从某些默认值运行,但仍然显示该表单导致问题。
我环顾四周,我认为在这种情况下有一种方法可以抑制形态,但我找不到具体的方法。有谁知道如何压缩表单并允许此应用程序运行?
答案 0 :(得分:3)
从WinForms应用程序中获取计划任务所需的逻辑,并将其放在控制台应用程序中。如果您可以在两个位置重用逻辑,请将其移动到共享库中。
答案 1 :(得分:2)
将您的应用程序转换为控制台模式,并检查任务计划程序的“常规”选项卡中的“隐藏”复选框。
这会对你有所帮助
如果您想使用WinForm应用程序,请将其ShowOnTaskbar属性设置为false。
很容易将winform应用程序转换为winform。只需转到项目属性并将输出类型更改为Console。但是你需要在代码中做一些调整。
答案 2 :(得分:0)
检查是否设置了/ AUTO参数,然后根据是否存在。在Program.cs中更改此内容:
Application.Run(new Form1());
到
Application.Run();
这不会显示表格,你可以做任何你喜欢的事情。
这是我能给你的最好的,没有看到你的代码。跳吧有帮助!
答案 3 :(得分:0)
您可以告诉任务与桌面交互,在这种情况下,显示的表单不是问题。只要您的应用程序自行关闭,工作就完成了。
我做了一个基于表单的事情,然后想要一个预定的任务,所以写了一个命令行前端调用基于表单的应用程序,然后将2个exes与ilmerge一起推,所以它不能混淆,因为它是一个廉价的黑客
如果您的代码写得正确,您可以执行exe前端并使用与表单(或dll)相同的类并以此方式工作。
答案 4 :(得分:0)
据我了解你,你不再需要表格模式,对吗?
如果这是正确的,我建议将您的应用程序实现为服务,例如WCF服务。它可以在配置的计时器上永久运行和执行业务逻辑。
为了使计时器的配置简单灵活,您可以选择imncorporate NCronTab。这使您可以按照45 11 * * Friday
(=>“每周五上午11点45分运行”)的方式安排任务。