如何管理应用程序关闭的方式?

时间:2012-11-13 13:20:55

标签: c# c#-4.0

我需要以相同的方式关闭我的应用程序,无论是直接关闭还是从任务栏或任务管理器关闭。我需要进行一些预设置,并在每次关闭应用程序之前自动生成日志文件...

例如,我每次退出时都会对我的申请表格给出以下效果,但是当我从任务栏或任务管理器关闭我的应用程序时,不会显示此效果......

    System.Windows.Forms.Timer closeTimer = new System.Windows.Forms.Timer();

    void lblClose_Click(object sender, System.EventArgs e)
    {
        closeTimer.Tick += new EventHandler(closeTimer_Tick);
        closeTimer.Interval = 10;
        closeTimer.Start();            
    }

    void closeTimer_Tick(object sender, EventArgs e)
    {
        int a = (int)(this.Opacity * 100);
        a--;
        this.Opacity = ((double)a / 100);
        if ((this.Opacity*100) == 0)
            this.Close();
    }

3 个答案:

答案 0 :(得分:5)

来自this question

[STAThread]
static void Main()
{
    Application.EnableVisualStyles();
    Application.SetCompatibleTextRenderingDefault(false);
    Application.ApplicationExit += new EventHandler(Application_ApplicationExit);
    AppDomain.CurrentDomain.ProcessExit += new EventHandler(CurrentDomain_ProcessExit);
    Application.Run(new MainForm());
}

这比使用FormClosed更可取,因为表单正在关闭并不一定意味着应用程序是(特定于您的代码)。

答案 1 :(得分:4)

我假设您的应用是System.Windows.Forms.Application。如果是这样,您可以收听ApplicationExit事件。

所以在Main中,做一些像:

Application.ApplicationExit += (s,e) =>
{
   // Your exit code.
};

请参阅http://msdn.microsoft.com/en-us/library/system.windows.forms.application.applicationexit.aspx

答案 2 :(得分:0)