16

当应用程序关闭时,我如何或在哪里运行命令,即使是调试停止?

即使用户是开发人员并单击 Visual Studio 上的“停止调试”按钮,我也需要在任何退出时执行命令。

我尝试

Application.ApplicationExit += new EventHandler(this.OnApplicationExit);

但它不起作用。也许我错了或者不是事件。

我使用的是 Winforms 而不是,Form Close 不能成为事件。

我正在使用 Visual Studio 2005 Net Framework 2.0(根据客户要求),但仅供参考。

也许我可以重写这个?:

public static void Exit();
4

4 回答 4

15

问题是“停止调试”功能将完全停止应用程序 - 因此该应用程序中没有更多的代码将运行。

实现这一点的唯一方法是观察正在外部调试的进程,并在它被暂停时执行代码。

根据[MSDN]:

如果程序是从 Visual Studio 启动的,则停止调试会终止您正在调试的进程。

但是,您可以使用Visual Studio 插件来实现您想要的

于 2012-06-13T22:02:33.780 回答
1

根据 MSDN:http: //msdn.microsoft.com/en-us/library/system.windows.forms.application.applicationexit%28v=vs.80%29.aspx

// Handle the ApplicationExit event to know when the application is exiting.
Application.ApplicationExit += new EventHandler(this.OnApplicationExit);

private void OnApplicationExit(object sender, EventArgs e) {
// When the application is exiting
}

这是你实施的吗?

于 2012-06-13T22:08:20.843 回答
1

试试这个:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows.Forms;

namespace Prueba {
    static class Program {
        [STAThread]
        static void Main() {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new Form1());
            //This is the magic line code :P
            AppDomain.CurrentDomain.ProcessExit += new EventHandler(CurrentDomain_ProcessExit);
        }

        static void CurrentDomain_ProcessExit(object sender, EventArgs e) {
            MessageBox.Show("");
        }
    }
}

参考在这里(Fredrik Mörk):. NET Console Application Exit Event

于 2012-06-13T22:16:24.173 回答
0

您可以使用暂停恢复布局。此外,如果您有一个装满东西的组合框,它可能会减慢您的速度。我也会考虑进入“解决方案资源管理器”并右键单击并选择底部的“属性”。选择“配置属性”并选择“发布”和“调试”。这将大大缩短表单加载时间。 这个链接会解释

于 2021-07-26T15:53:47.153 回答