单击“停止调试”按钮后是否可以运行事件?c#WPF

单击“停止调试”按钮后是否可以运行事件?c#WPF,c#,wpf,visual-studio,visual-studio-debugging,C#,Wpf,Visual Studio,Visual Studio Debugging,可以在关闭或出错时捕获并运行所需的代码 然而,我仍然处于开发阶段,将有更多的时间,我正在以调试模式运行应用程序(单击F5按钮) 以及通过停止调试(F5档)终止应用程序 当我终止应用程序并停止调试时,关闭事件不会触发(当您单击右上角的X标记关闭应用程序时触发的事件) 那个么,有并没有办法让应用程序在单击停止调试按钮时运行 下面是我的on close函数-在MainWindow.xaml.cs内 AppDomain currentDomain = AppDomain.CurrentDomain; C

可以在关闭或出错时捕获并运行所需的代码

然而,我仍然处于开发阶段,将有更多的时间,我正在以调试模式运行应用程序(单击F5按钮)

以及通过停止调试(F5档)终止应用程序

当我终止应用程序并停止调试时,关闭事件不会触发(当您单击右上角的X标记关闭应用程序时触发的事件)

那个么,有并没有办法让应用程序在单击停止调试按钮时运行

下面是我的on close函数-在MainWindow.xaml.cs内

AppDomain currentDomain = AppDomain.CurrentDomain;
Closing += new CancelEventHandler(CloseCrashHandlers.CloseHander);
非常感谢您的回答


Visual Studio 2013 V3

当您点击shift+F5组合以停止调试在调试器下运行的应用程序时,执行某些自定义代码(或按问题中的说明“使应用程序运行”)的唯一方法是创建挂接下一个Visual Studio扩展性事件的Visual Studio扩展(或加载项):

EnvDTE.DebuggerEvents _dteDebuggerEvents;

_dteDebuggerEvents = VsObject.DTE.Events.DebuggerEvents;

_dteDebuggerEvents.OnEnterDesignMode += _dteDebuggerEvents_OnEnterDesignMode;
_dteDebuggerEvents.OnContextChanged += _dteDebuggerEvents_OnContextChanged;


void _dteDebuggerEvents_OnEnterDesignMode(dbgEventReason Reason)
{
   switch (Reason)
   {
       case dbgEventReason.dbgEventReasonStopDebugging:
             // do whatever you need here
       break;
   }
}

注意:您将无法使用上述处理程序从自己正在运行的应用程序中执行任何代码。

您是否可以关闭窗口而不是终止调试?在终止调试后允许代码继续运行有点违背了终止调试的目的,只需关闭你的应用程序,它将触发你的所有事件,然后停止调试单击“关闭”并不总是一个选项。例如,asp.net web应用程序没有“关闭”按钮;关闭web浏览器窗口后,他们的会话将保持活动状态。如果它在IIS Express中运行,您可以右键单击它并选择“停止”,这将触发会话\u结束和CurrentDomain\u DomainUnload事件(但不是CurrentDomain\u ProcessExit)。我希望有一种方法可以拦截“停止调试”事件或重写其行为,因为它当前似乎突然停止了进程,而不允许任何清理代码运行。基本上,这是不可能的:DJust在这里添加了一种获取VsObject的方法:
var-VsObject=(EnvDTE.DTE)wait-GetServiceAsync(typeof(EnvDTE.DTE))\u dteDebuggerEvents=VsObject.Events.DebuggerEvents