Task Scheduler控制台应用程序会及时显示调试器上的异常,以防止程序再次运行

时间:2019-03-22 15:36:59

标签: exception scheduled-tasks console-application windows-server-2012-r2 taskscheduler

我有一个控制台应用程序,它每5分钟运行一次Windows Server Task Schedule。如果该程序在5分钟后仍在运行,则该程序不会再次运行,因此一次只能运行一个实例。

但是,当发生异常时,即时调试器会出现并且不会消失,从而阻止了应用程序再次运行。

有没有办法防止这种情况?我希望JIT调试器不会出现,以便应用程序完成,并在下次尝试时再次运行。

1 个答案:

答案 0 :(得分:0)

一个问题就是为什么程序以异常结尾?如果不需要异常,将一些重定向到文件中会不会更好。

我个人将在注册表中禁用JIT调试器。从visual studio docs开始,如果未在计算机上安装VS,则可能是这种情况。

从Windows注册表中禁用即时调试

即使您的计算机上不再安装了Visual Studio,仍可以启用即时调试。如果不再安装Visual Studio,则可以通过编辑Windows注册表来禁用即时调试。

通过编辑注册表来禁用即时调试

  1. 从Windows的“开始”菜单中,运行注册表编辑器(regedit.exe)。

  2. 在“注册表编辑器”窗口中,找到并删除以下注册表项:

    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\DbgManagedDebugger
    
    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AeDebug\Debugger
    
  3. 如果您的计算机运行的是 64位操作系统,请删除以下注册表项:

    HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\.NETFramework\DbgManagedDebugger
    
    HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows NT\CurrentVersion\AeDebug\Debugger
    

确保不要删除或更改任何其他注册表项。