0

これはコンソールアプリケーションです。以下のプログラムを実行すると、単一のコンソールが表示され、binディレクトリから他の3つのコンソールを実行しました。私の質問は、
1つのコンソールが完了したときにタスクが完了したことです。コントロールは他のコンソールに移動せず、同じディスプレイRunning(コンソール1)を表示しています。ランニングは他のコンソールでどのように表示されますか。

class Program
{
    static Mutex m = new Mutex(true, "demo");

    public static void Main()
    {
        if (!m.WaitOne(1000))
        {
            Console.WriteLine("another");
            Console.ReadLine();
        }
        else
        {
            try
            {
                run();
            }
            finally
            {
                m.ReleaseMutex();
            }
        }
    }
    public static void run()
    {
        Console.WriteLine("running");
        Console.ReadLine();
        Thread.Sleep(1000);
          m.ReleaseMutex();
    }
}
4

1 に答える 1

0

ユーザー入力を保持する readline が原因で、プログラムが動かなくなる可能性があります。以下のようにミューテックスを使用してみてください。

using (var mutex = new Mutex(false, "demo"))
 {
        mutex.WaitOne(); 
        run(); 
        mutex.ReleaseMutex();
}     
于 2012-05-11T05:40:36.190 に答える