Сторожевой пес в C # через мьютекс - PullRequest
0 голосов
/ 19 декабря 2018

Я сейчас пытаюсь создать «сторожевой таймер» в c #, который проверяет, используется ли мьютекс, все ли у него хорошо, если нет -> запустить приложение.

Работает нормально для первоговремя, но как только основное приложение останавливается / заканчивается, оно не распознает это.Он все еще думает, что мьютекс используется, а также, кажется, блокирует его для сторожевого процесса?

        string mutexdog = "dog";
        try
        {
            Mutex.OpenExisting(mutexdog);
            System.Environment.Exit(0);
        }
        catch
        {
            Program._m = new Mutex(true, mutexdog);
        }
        while(true)
        {
            string mutexmain = "main";
            try
            {
                Mutex.OpenExisting(mutexmain);

                Console.WriteLine("Main is running");
            }
            catch
            {
                Console.WriteLine("Main is not running, starting!");
                Process p = new Process();
                p.StartInfo.FileName = "main.exe";
                p.Start();
                Thread.Sleep(1500);
            }
            Thread.Sleep(500);
        }

Есть ли способ проверить, используется ли мьютекс, не блокируя его?Я бы предпочел сделать это по мьютексу из-за множества причин и других проблем, которые у меня были ранее, путем проверки имени процесса ...

...