1

Process の Exited イベントに結び付けています。Exited イベントが実行されたときに何が起こるかを決定する、そのイベントのプロセスのチェックボックスがあります。プロセスの実行中にチェックボックスをオンにすると、プロセスが取得され、Exited イベントが追加されます。Process が実行されていない場合は、プロセスが開始され、Exited イベントが追加されます。チェックボックスがオフの場合、プロセスが実行されているかどうかに関係なく、何もしません。

私の問題は、プロセスが実行されていて、ボックスをオンにして (イベントを取得する)、ボックスをオフにして (設計上何も起こらない)、ボックスを再度オンにすると、プロセスが 2 つの終了イベント (まったく同じ) を取得することです。方法)。Process オブジェクトがある場合、Exited イベントが既に存在する場合、それを追加しないようにするにはどうすればよいですか?

4

5 に答える 5

0

イベントを覗き込む必要がある場合は、リフレクションを使用できます。

class Program
{
    static void Main(string[] args)
    {
        var car = new Car();
        car.Stopped += car_Stopped;
        var evt = car.GetType().GetEvent("Stopped");
        if(evt == null) //evt will be null if nothing is registered to the event
            car.Stopped += car_Stopped;

        car.Stop(); //Prints 'Stopped!' only once

        Console.ReadLine();
    }

    static void car_Stopped(object sender, EventArgs e)
    {
        Console.WriteLine("Stopped!");
    }
}

class Car
{
    public event EventHandler<EventArgs> Stopped;
    protected void OnStopped()
    {
        var temp = Stopped;
        if(temp != null)
            Stopped(this, new EventArgs());
    }
    public void Stop()
    {
        OnStopped();
    }
}
于 2013-05-28T21:26:38.887 に答える