我是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时,不会弹出警告框。有谁知道我做错了什么?如果我还在学习,欢迎提出更多指示:)
答案 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");
}