如何检测控制台应用程序何时被C#中的计划任务停止?

如何检测控制台应用程序何时被C#中的计划任务停止?,c#,C#,我有一个运行指定时间段的控制台应用程序。如果应用程序在指定的时间内运行,则会有一个计划作业停止应用程序 您能告诉我是否有任何方法可以检测应用程序何时被调度程序停止吗 我已经尝试了几件事,例如捕获CurrentDomain.ProcessExit上的事件,并实现SetConsoleCtrlHandler,但都没有成功 提前感谢您的建议。如果进程被终止,您无法在进程中检测到。你需要一个不同的解决方案。选项包括有一个单独的“观察者”过程,但我猜这将是不必要的复杂 我可能会在进程本身中放置一个金丝雀线程

我有一个运行指定时间段的控制台应用程序。如果应用程序在指定的时间内运行,则会有一个计划作业停止应用程序

您能告诉我是否有任何方法可以检测应用程序何时被调度程序停止吗

我已经尝试了几件事,例如捕获
CurrentDomain.ProcessExit
上的事件,并实现
SetConsoleCtrlHandler
,但都没有成功


提前感谢您的建议。

如果进程被终止,您无法在进程中检测到。你需要一个不同的解决方案。选项包括有一个单独的“观察者”过程,但我猜这将是不必要的复杂

我可能会在进程本身中放置一个金丝雀线程,它使用一个计时器和取消令牌来通知它应该完全中止的任务


同一个控制台应用程序可以在启动时检测自身的实例是否已经在运行(例如挂起),并管理进程本身。这样,所有的逻辑都在一个地方,您不需要预定的任务来做任何花哨的事情。

找到了本文。这就解释了杀戮过程不能由应用程序处理。您必须以一种很好的方式退出consoleapp,而不仅仅是终止其进程

计划作业如何终止任务?我通常只建议在无法更改正在运行的程序的代码时让任务调度器终止程序-这是一种非常粗糙的大锤方法。既然您正在考虑更改此程序的代码,为什么不在内部实现超时?那么,当超时发生时,没有什么可检测的,因为是您的代码导致关机。谢谢您的反馈。是的,似乎无法在代码中检测到。我将检查终止应用程序的其他方法。也考虑James World提供的解决方案。如果这不可能,可以创建单独的后台服务应用程序,如果你的控制台应用程序有效,可以每隔一段时间检查一次,如果没有,可以做一些事情。谢谢你的反馈。我会寻找其他的选择。