通过互斥量在C#中使用看门狗

时间:2018-12-19 15:36:10

标签: c# multithreading mutex

我目前正在尝试在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);
        }

有没有办法检查互斥锁是否在使用中而不将其锁定?由于多个原因以及我之前通过检查进程名称而遇到的其他问题,我宁愿使用互斥锁而不是互斥锁。

0 个答案:

没有答案