0

我有一个执行各种文件操作的 .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仍然报告失败。我究竟做错了什么?

4

1 回答 1

0

流程结束时,Autosys 会将作业标记为成功完成。在您的情况下,您已经告诉它是一个 Win-Form 应用程序。所以这里可能发生的是 autosys 正在启动应用程序,并且应用程序工作正常并且它正在做它应该做的事情。但是这个过程不会结束,除非有人手动关闭窗口应用程序或者如果你有一些技术可以自行关闭。所以 Autosys 假设该过程没有结束,因此将作业标记为失败。

解决方案是将您的应用程序作为控制台应用程序,否则我记得在设置 Autosys 作业时有一个属性不考虑进程结束,因此该作业只会启动程序并将作业标记为已完成。

于 2014-02-04T09:11:28.347 回答