程序关闭后如何运行操作?

时间:2014-01-08 20:11:33

标签: c# .net

我是c#的新手,我觉得它与我的PHP起源有很大的不同,所以我可能完全错了。但是从我的理解来看,它非常准确。基本上我需要在我的表单中按钮点击启动程序(该部分工作正常)然后当用户关闭程序时我需要运行一个动作,在这种情况下我显示一个消息框。

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

namespace usb
{
    class Applications
    {
        //condition variables
        public static bool CalcStatus = false;

        public static void Calc()
        {
            Process CALC;
            CALC = Process.Start("calc.exe");
            if (CALC.HasExited)
            {
                MessageBox.Show("CALC has exited");
                CalcStatus = true;
            }
        }
    }
}

这个片段是一个类的一部分,另一个类使用这个函数,当它被调用时,calc会打开,当关闭calc时,不会弹出警告框。有谁知道我做错了什么?如果我还在学习,欢迎提出更多指示:)

2 个答案:

答案 0 :(得分:8)

当进程退出时,您使用Exited事件运行一些代码:

CALC.EnableRaisingEvents = true;
CALC.Exited += (sender, args) => MessageBox.Show("CALC has exited");

答案 1 :(得分:0)

方法1: 显示消息 等待

//condition variables
public static bool CalcStatus = false;

public static void Calc()
{
    var calc = new Process
    {
        StartInfo = new ProcessStartInfo
        {
            FileName = "calc.exe"
        }
    };
    calc.Start();
    calc.WaitForExit();
    MessageBox.Show("CALC has exited");
    CalcStatus = true;
}

方法2: 显示消息 ,无需等待

//condition variables
public static bool CalcStatus = false;

public static void Calc()
{
    var calc = new Process
    {
        StartInfo = new ProcessStartInfo
        {
            FileName = "calc.exe"
        },
        EnableRaisingEvents = true,
    };
    calc.Exited += calc_Exited;

    calc.Start();
    CalcStatus = true;
}

static void calc_Exited(object sender, EventArgs e)
{
    MessageBox.Show("CALC has exited");
}