3

私は次のものを持っています:

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");
    }

}

メモ帳を閉じると、期待していたメッセージが表示されません。メモ帳を閉じるとコンソールに戻るようにするにはどうすればよいですか?

4

2 に答える 2

7

2 つのことが必要です -発生するイベントを有効にし、 Exitedイベントをサブスクライブします。

    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");
    }
于 2013-01-19T20:33:40.130 に答える
0

Disposed の代わりにExitedイベントを使用します。

pr.Exited += new EventHandler(YouClosedNotePad);

また、 EnableRaisingEventsプロパティが true に設定されていることを確認する必要があります。

pr.EnableRaisingEvents = true;
于 2013-01-19T20:32:16.367 に答える