繁体   English   中英

将C#应用程序作为计划任务运行

[英]Run C# application as scheduled task

我有一个旨在与Windows窗体一起运行的C#应用​​程序,但现在需要作为计划任务运行。 我对此有问题,我认为这是因为它必须“无头”,因为它不应具有用户环境的概念。 该程序被编写为在无人看管的情况下运行,因为它具有/ AUTO arg,然后将以某些默认值运行,但仍显示该表格,这会导致问题。

我环顾四周,我认为在这种情况下有一种方法可以隐藏表格,但是我找不到确切的方法。 有谁知道我可以取消该表单并允许该应用程序运行吗?

从WinForms应用程序中取出计划任务所需的逻辑,并将其放入控制台应用程序中。 如果您可以在两个地方重用逻辑,请将其移到共享库中。

将您的应用程序转换为控制台模式,然后选中任务计划程序的“常规”选项卡中的“隐藏”复选框。

这对你有帮助

在此处输入图片说明

仍然,如果您想使用WinForm应用程序,则将其ShowOnTaskbar属性设置为false。

而且,将您的winform应用程序转换为winform一个非常容易。 只需转到项目属性,然后将输出类型更改为Console。 但是您需要对代码进行一些调整。

检查是否设置了/ AUTO参数,然后根据是否设置。 在Program.cs中进行更改:

Application.Run(new Form1());

Application.Run();

这不会显示表单,您可以执行其他任何您喜欢的事情。

这是我能看到的最好的代码。 希望对您有帮助!

您可以告诉任务与桌面进行交互,在这种情况下,显示的表单不是问题。 只要您的应用程序将自行关闭,作业才能完成。

我做了一个基于表单的事情,然后想要一个预定的任务,所以写了一个命令行前端调用基于表单的应用程序,然后将两个exe与ilmerge一起推送,因此不会感到困惑,因为这是一个廉价的技巧

如果您的代码编写正确,则可以执行exe前端,并使用与窗体(或dll)相同的类并以这种方式工作。

据我了解,您不再需要表单模式,对吗?

如果正确,我建议将您的应用程序实现为服务,例如WCF服务。 它可以在配置的计时器上永久运行和执行您的业务逻辑。

为了使计时器的配置变得简单而灵活,您可以选择合并NCronTab 这使您可以按照45 11 * * Friday (=>“每个星期五的上午11:45运行”)的格式来安排任务

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM