Как убрать дубликат - C#

Узнай цену своей работы

Формулировка задачи:

Вот кусок кода программы "таймер.exe", при запуске стартует программу "test.exe" с отсрочкой запуска 300 сек (типа таймера сделал)
            System.Threading.Thread.Sleep(300 * 1000);
            string exePath = Path.Combine
            (
                Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData),
                "papka", "test.exe"
             );
            Process.Start(exePath);
Суть проблемы, если запустить снова, то она запустит дубликат "таймер" программы и так много раз можно. Как сделать: 1. Что бы если "таймер" уже запущен (идет отсчет времени до запуска "test.exe" ) при повторном нажатии на программку не запускался дубликат таймера? 2. Если программа "test.exe" уже выполняется, то также не запускался "таймер"

В моем представлении, в код надо добавить типа проверки на активность процессов - "таймер.exe" и "test.exe" и если хоть один из них уже выполняется, то программа "таймер" больше не запускается.

P.S. могу и ошибаться в плане реализации, но думаю Вы поняли, что нужно в итоге сделать.

Решение задачи: «Как убрать дубликат»

textual
Листинг программы
    HANDLE mutex = CreateMutex(NULL, TRUE, "таймер.exe");
 
    if (mutex == NULL || GetLastError() == ERROR_ALREADY_EXISTS)
    {
        if (EnumWindows(&EnumWindowsProc, NULL) && wnd != NULL)
        {
            ShowWindow(wnd, SW_RESTORE);
            SetForegroundWindow(wnd);
            return true;
        }
    }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

6   голосов , оценка 3.667 из 5
Похожие ответы