Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Общие вопросы по .NET и C# > закрыть первую копию приложения


Автор: СерегаГоляков 12.10.2011, 17:14
Приложение запускается, при запуске должно проверить есть ли уже запущенная копия, существует - тогда закрыть уже работающую и продолжить запуск?
Почему-то этот код попадает в 1, но не закрывает тот процесс
Код

            Boolean IsFirstInstance;
            Mutex globalMutex = new Mutex(true, "GlobalMutexOfMyTestApplication", out IsFirstInstance);
            if (IsFirstInstance != true)
            {
                var r = Process.GetCurrentProcess().Id;//на всякий случай
                procList = Process.GetProcesses();
                for (int i = 0; i < procList.Length; i++)
                {
                     //здесь проверим условие:
                    //совпадения имени но не совпадение ИД, т.к. у одинаковых процессов будут разные
                    if (procList[i].ProcessName.Equals("!Вырубатель") == true && procList[i].Id != Process.GetCurrentProcess().Id)
                    {
                        Process.GetProcessById(procList[i].Id).Close(); //1
                    }
                }
            }

Автор: СерегаГоляков 12.10.2011, 17:47
О тупасть)))
Код

Process.GetProcessById(procList[i].Id).Kill();

Автор: jonie 12.10.2011, 19:16
лучше так не делать - у вас может не быть прав на такие вещи... лучше чтобы программа (убиваемая, если это надо) понимала что ее хотят выгрузить и делала это законно.

Автор: СерегаГоляков 17.10.2011, 16:57
Цитата(jonie @ 12.10.2011,  19:16)
делала это законно.

В смысле передать ей какой то флаг, чтоб она сама себя закрыла?
И каким образом?

Автор: jonie 17.10.2011, 18:01
Цитата(СерегаГоляков @ 17.10.2011,  17:57)
Цитата(jonie @ 12.10.2011,  19:16)
делала это законно.

В смысле передать ей какой то флаг, чтоб она сама себя закрыла?
И каким образом?

да хоть через оконные сообщения или через пайпы. Читайте про IPC.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)