我有一个.net应用程序,可以执行各种文件操作。它已经通过任务管理器安排并且运行没有问题。我们正在将工作转移到由autosys控制并配置工作。当它开始时我看到所有文件按预期移动,我得到一个日志文件,表明一切都按预期运行。该应用程序正在运行然而,Autosysy报告它失败了。
Status/[Event] Time Ntry ES ProcessTime Machine
-------------- --------------------- -- -- --------------------- ----------------------------------------
RUNNING 09/26/2013 15:30:21 1 PD 09/26/2013 15:31:12
FAILURE 09/26/2013 15:31:59 1 PD 09/26/2013 15:32:17
[*** ALARM ***]
JOBFAILURE 09/26/2013 15:32:16 1 PD 09/26/2013 15:32:17
[STARTJOB] 09/26/2013 16:00:00 0 UP
该应用程序是一个winform应用程序 - 这是代码的核心:
static int Main(string[] args)
{
Console.WriteLine("Starting processing...");
Console.WriteLine(DateTime.Now.ToString(CultureInfo.InvariantCulture));
if (args.Length > 0) //if we call the app with args we do some stuff, otherwise we show the UI to let the user choose what to do
{
//stuff happens here that works, other method calls, etc.
Console.WriteLine(DateTime.Now.ToString(CultureInfo.InvariantCulture));
Console.WriteLine("Process complete.");
return 0;
}
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new FileLoader());
return 0;
}
作业正在运行,它正在做一切应该做的事情而不记录任何例外但是autosys仍然报告失败。我做错了什么?
答案 0 :(得分:0)
Autosys会在流程结束时将作业标记为已成功完成。在你的情况下,你已经告诉它它是一个Win-Form应用程序。所以这里可能发生的是autosys正在启动应用程序,并且应用程序工作正常,它正在做它想做的事情。但是,除非有人手动关闭窗口应用程序或者你有一些技术要关闭,否则这个过程不会结束。因此,Autosys假设流程未结束,从而将工作标记为失败。
解决方法是将您的应用程序作为控制台应用程序,否则我记得在设置Autosys作业时有一个属性不考虑进程结束,因此作业将启动程序并将作业标记为已完成。 / p>