【问题标题】:Console Application has Stop Working when called by Task Schedule控制台应用程序在任务计划调用时停止工作
【发布时间】:2013-12-13 09:08:39
【问题描述】:

我开发了一个控制台应用程序来生成一系列报告,如果我双击已部署的应用程序 (.exe),它运行良好,但如果我使用 Windows 任务计划程序安排应用程序,我会收到一条消息:{APP NAME} 已停止工作,代码永远不会执行。

如果需要,我可以提供有关 cmets 的更多信息

Windows Server 2008 标准 SP2 .Net Framework 4.0 已安装

【问题讨论】:

  • 如果您发现更多详细信息,请查看事件查看器并在此处发布。在那之前,我的猜测是进入用户权限方向。
  • 您也可以尝试将应用程序尝试执行的任何操作记录到文件中。
  • 除了权限之外,您可能还需要设置应用程序的工作目录。这是任务计划程序中的一个选项。
  • 任务调度程序没有在事件查看器上记录任何内容,我使用的是本地管理员帐户,并且同一帐户用作任务的调用者

标签: c# .net scheduled-tasks console-application


【解决方案1】:

我正在回复一篇旧帖子,以防它对其他人有所帮助。我遇到过同样的问题。事件日志说程序正常完成,但甚至第一行代码都不会为我写入日志。它最终成为任务计划程序中的“开始”选项。我突然想到,当我在当前目录中时,程序从命令行运行良好。在同一目录中有清单文件和其他依赖项。因此,如果您告诉计划作业在与 EXE 相同的目录中启动,您可能会得到有利的结果。这是我的解决方案。

【讨论】:

    【解决方案2】:

    我不知道你的 Main 方法中有什么,但你可以试试这样:

    namespace ConsoleApplication1
    {
        class Program
        {
            static void Main(string[] args)
            {
                AppDomain.CurrentDomain.UnhandledException += HandleUnhandledExceptionEvent;
            }
    
            private static void HandleUnhandledExceptionEvent(Object sender, System.UnhandledExceptionEventArgs e)
            {
                //write details to file or output to console, popup message, etc.
            }
        }
    }
    

    根据我的经验,这些类型的“停止工作”错误有时可能是引发未处理异常的结果。

    这只是在黑暗中的一个镜头,但我希望它对你的情况有所帮助。

    【讨论】:

    • 很酷的技巧,但它没有触发,我强制测试它以查看是否有错误事件被触发并且它可以工作,但是当我把它放在调度程序上时,我什至不考虑事件订阅甚至被执行(main 上的第一行)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-16
    • 2012-05-15
    • 2013-01-13
    • 2015-11-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多