Aviinash Ответов: 2

Как ограничить пользователя для повторного запуска и консольного приложения, если оно запущено


У меня есть консольное приложение, и я запускаю его с помощью метода process. start () из файла. aspx с помощью кнопки
но предыдущая запущенная консоль еще не закончила свою работу, и если кто-то снова нажмет эту кнопку, чтобы запустить то же самое консольное приложение, то он должен выдать ошибку, что то же самое консольное приложение уже запущено, пожалуйста, подождите, чтобы завершить его

Что я уже пробовал:

я пробовал отключить эту кнопку, но это не постоянное решение

2 Ответов

Рейтинг:
1

OriginalGriff

Когда вы запускаете приложение, держите ссылку на этот процесс:

private Process myApp = null;
...
if (myApp != null)
   {
   if (!myApp.HasExited)
      {
      throw new ApplicationException("App is still running");
      }
   }
myApp = new Process(...


Рейтинг:
1

Bilgehan Berberoğlu

Когда ваше приложение будет запущено, создайте глобальный мьютекс с ключом (например, AppName) и проверьте

using System.Threading;
static void Main()
{
  bool bAppFirstInstance;
  var oMutex = new Mutex(true, @"Global\" + @"APP_NAME", out bAppFirstInstance);

  if(bAppFirstInstance)
    //Start your app
    ......
  else
   //Warn user
    ......
}


Dave Kreskowiak

Это действительно останавливает процесс от запуска вообще. В течение небольшого промежутка времени оба процесса выполняются. Проблема, с которой вы столкнулись здесь, заключается в том, что страница, которая запустила его, не знает, каков был результат запуска этого процесса. Процесс не справился со своей задачей или нет?

Реальное решение состоит в том, чтобы вообще запретить странице запускать этот процесс.