83

我编写了一些通过 Windows 任务调度程序运行的 C# 应用程序。它们运行成功(正如我从它们正在编写的日志文件中看到的那样),但 Windows 任务调度程序显示它们返回的最后运行结果为0xE0434352. 我需要在我的 C# 应用程序中做些什么,以便它向 Windows 任务调度程序返回成功代码吗?

4

12 回答 12

102

另一种选择是简单地使用可通过 Windows 事件查看器访问的应用程序日志。.Net 错误将记录到应用程序日志中。

您可以在此处查看这些事件:

事件查看器(本地)> Windows 日志 > 应用程序

于 2013-03-19T13:27:56.730 回答
45

在新窗口中设置作业时,您有两个字段“程序/脚本”和“开始(可选) ”。将程序名称放在第一位,程序位置放在第二位。如果您不这样做并且您的程序不在 exe 目录中启动,它将找不到位于其中的文件。

于 2015-01-08T22:11:56.650 回答
26

Hans Passant 是正确的,我为 AppDomain.CurrentDomain.UnhandledException 添加了一个处理程序,如此处所述http://msdn.microsoft.com/en-us/library/system.appdomain.unhandledexception(v=vs.71).aspx我是能够找到正在发生的异常并纠正它。

于 2013-02-15T14:41:06.263 回答
12

我正在引用一个映射驱动器,我发现映射驱动器并不总是可用于运行计划任务的用户帐户,因此我使用\\IPADDRESS而不是MAPDRIVELETTER:并且我已经启动并运行。

于 2013-07-10T18:51:29.047 回答
7

如果它对其他人有帮助,当运行任务的服务没有对​​可执行位置的写入权限时,我会收到此错误。它试图在那里写一个日志文件。

于 2014-04-23T18:48:18.650 回答
2

我遇到了这个问题,这是由于 .Net 框架版本造成的。我已将构建升级到框架 4.0,但这似乎影响了应用程序正在使用的一些 comms dll。我回滚到框架 3.5,它运行良好。

于 2014-08-13T09:23:44.820 回答
2

我遇到了同样的错误,但我通过将文件读取路径从“ConfigFile.xml”更改为 AppDomain.CurrentDomain.BaseDirectory.ToString() +“ConfigFile.xml ”来修复它

在我的情况下,由于文件路径错误导致此错误,因为任务管理器从“System32”作为初始路径启动程序,但我们认为的文件夹。

于 2016-02-16T01:09:41.320 回答
1

我使用 MVC 5 在 dotNet Core 2.2 中收到了相同的消息消息,但是没有任何内容被记录到 Windows 事件查看器中。

我发现我已将 Project sdk 从更改Microsoft.NET.Sdk.WebMicrosoft.NET.Sdk.Razor(在projects.csproj文件中看到)。我把它改回来了,效果很好:)

于 2019-03-20T14:28:37.380 回答
0

还有 PowerShell 中的消息框。我将 PowerShell 脚本转换为 exe。当以管理员身份运行时,它可以工作,但在任务计划中我也收到了这个错误。PowerShell 脚本中有一行带有写输出。注释此行并编译新的 exe 任务计划后成功完成。

于 2021-10-23T13:54:38.780 回答
0

我在处理 COM 对象时遇到了这个问题。在某些情况下(我的错),我破坏了一个外部 .EXE 进程,在一个并行线程中,一个变量试图访问 com 接口 app.method 并且发生了 COM 级崩溃。任务计划程序注意到这一点并关闭了应用程序。但是如果您在控制台中运行应用程序并且不处理异常,应用程序将继续工作......

请注意,如果您使用非托管代码或外部对象(AD、Socket、COM ...),您需要对其进行监控!

于 2020-07-31T04:34:36.183 回答
0

就我而言,这是因为我有消息框。一旦我注释掉该代码,它就开始工作了。我记得当我按照此线程中的建议查看事件日志时,这可能是个问题。谢谢大家!

于 2020-06-26T19:55:59.437 回答
-1

在我的情况下,这是权限问题,任务计划程序的用户对存在数据库的服务器没有权限。

于 2018-10-03T13:10:49.777 回答