1

Мой вопрос, почему "cmd" существует (бездействует) в моем процессе после того, как я обновляю свой exe?

В моем коде я запускаю этот код, чтобы обновить себя и запустить

var args = string.Format(@"/C ping 1.1.1.1 -n 1 -w 3000 & move /Y ""{0}"" ""{1}"" & ""{1}"" {2}", updateFn, fn, exeargs);
new Process() { StartInfo = new ProcessStartInfo(@"cmd", args) { CreateNoWindow = true, UseShellExecute = false } }.Start();
Environment.Exit(0);

Идея заключается в том, что я сразу же выхожу из системы и получаю команду ping в течение 3 секунд, прежде чем пытаться заменить мой текущий exe на мой обновленный exe. Затем я запускаю с необходимыми аргументами

Полный аргумент для cmd выглядит следующим образом

/C ping 1.1.1.1 -n 1 -w 3000 & move /Y "c:\path\update" "c:\path\my.exe" & "c:\path\my.exe" exeargs

Все работает нормально, но я вижу cmd в диспетчере задач (выглядит как бездействующий) после того, как мой процесс запущен и работает правильно. Зачем?

1 ответ1

3

Последней частью вашего аргумента является & "c:\path\my.exe" exeargs который заставляет интерпретатор команд ожидать завершения работы my.exe прежде чем он завершится, и, очевидно, my.exe не является программой, которая выполняется и существует сам по себе; он остается активным.

Вы можете использовать start my.exe чтобы командный интерпретатор запустил my.exe и продолжил работу, не дожидаясь его.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .