纠正EventHandler告诉我记事本何时关闭

本文关键字:何时关 记事本 告诉我 EventHandler 纠正 | 更新日期: 2023-09-27 17:54:24

我有以下内容:

class Program {
    static void Main(string[] args) {
        Process pr;
        pr = new Process();
        pr.StartInfo = new ProcessStartInfo(@"notepad.exe");
        pr.Disposed += new EventHandler(YouClosedNotePad);
        pr.Start();
        Console.WriteLine("press [enter] to exit");
        Console.ReadLine();
    }
    static void YouClosedNotePad(object sender, EventArgs e) {
        Console.WriteLine("thanks for closing notepad");
    }
}

当我关闭记事本时,我没有得到我希望得到的消息-我如何修改,使关闭记事本返回到控制台?

纠正EventHandler告诉我记事本何时关闭

您需要两件事-启用引发事件,并订阅退出事件:

    static void Main(string[] args)
    {            
        Process pr;
        pr = new Process();
        pr.StartInfo = new ProcessStartInfo(@"notepad.exe");
        pr.EnableRaisingEvents = true; // first thing
        pr.Exited += pr_Exited; // second thing
        pr.Start();
        Console.WriteLine("press [enter] to exit");
        Console.ReadLine();
        Console.ReadKey(); 
    }
    static void pr_Exited(object sender, EventArgs e)
    {
        Console.WriteLine("exited");
    }

您想使用exit事件而不是dispose:

pr.Exited += new EventHandler(YouClosedNotePad);

您还需要确保EnableRaisingEvents属性设置为true:

pr.EnableRaisingEvents = true;