2012-03-12 3 views
0

У меня есть по существу две программы:Issue Сообщение без блокировки ехе

  1. main.exe
  2. update.exe

Update создает файл флаг (update.inprogress) так, главным образом, не может пока выполняется обновление.

Если главный файл открывается и этот файл существует, он немедленно завершается, чтобы предотвратить конфликт используемой программы.

У меня только одна проблема. Если обновление находится в процессе, основная программа закрывается без причины и причины, когда они пытаются войти. Мне нужно сказать им, что программа обновляется, чтобы они не звонили нам, что мир подошел к концу ...

Мой вопрос в том, как я могу отправить сообщение о том, что обновление выполняется без привязки main.exe? Если я выпущу его из main.exe, он будет использоваться и не может быть обновлен.

Я думал открыть блокнот и поставить сообщение там, но это просто кажется плохим способом сделать это.

Я мог бы также создать еще один exe, который отображает это сообщение, но если мне нужно его обновить, он будет использоваться тоже .. как бы поражает мою цель.

У кого-нибудь есть идея?


Разъяснение:

Это сеть равноправных узлов ЛВС. Обновление можно запустить на рабочей станции XYZ, и кто-то может попытаться попасть в main.exe на рабочей станции ABC. Вот почему я использую файл флага. Я должен проверить процесс, выполняемый на другой рабочей станции.

+0

Massimiliano Peluso прав. Поскольку вы НЕОБХОДИМО открыть главную страницу, чтобы проверить флаг, я не понимаю, почему вы также не можете отобразить сообщение. После того, как вы проверите флажок, вы увидите сообщение. новый процесс, когда вы открываете ma в таком случае, возможно, поросенок на нем скручивается. – Adrian

+0

Если main.exe остается открытым, теперь используется main.exe. Я немедленно закрываю main.exe так, чтобы он НЕ использовался, поэтому update.exe может обновить main.exe, не получая исключения, которое MAIN.EXE использует. В этом вся проблема, я не хочу, чтобы main.exe работал, иначе я столкнусь с ним в моей программе update.exe. – ErocM

+0

нажмите на кнопку «ОК» и нажмите кнопку «ОК» и сообщите пользователю, что им нужно нажать «ОК» для завершения обновления. – Adrian

ответ

1

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

Например, если обновление необходимо (вы можете выполнить это с помощью adding a version number to your main.exe and checking it), update.exe создаст ваш файл update.inprogress и запустит обновления. Затем, если будет запущен другой экземпляр update.exe, он увидит update.inprogress и предупредить пользователя о том, что обновление выполняется и завершается без привязки main.exe. Если update.exe запускается, когда нет необходимости в обновлениях, а update.inprogress не существует, он будет вызывать main.exe programmatically.

+0

Мне нравится эта идея. Это может сработать. Спасибо за вход! – ErocM

+0

@ErocM Возможно, есть некоторые угловые случаи, например, если main.exe уже запущен при запуске update.exe, но я уверен, что вы сможете решить их по мере их появления. –

0

Я бы предложил создать поток из вашего update.exe, чтобы проверить наличие вашего main.exe-процесса. В случае появления сообщения, сообщите пользователю сообщение из вашего файла update.exe.

+0

Я добавил больше к моему вопросу, чтобы прояснить это. – ErocM

+0

Вы можете отслеживать процессы из вашего update.exe и уведомлять пользователя о запуске main.exe. Посмотрите это, чтобы получить представление: http://stackoverflow.com/questions/1986249/c-sharp-process-monitor – Reinaldo

Смежные вопросы