Я знаю, что этот вопрос задавался несколько раз, когда форма A запускает другую форму B, а затем A необходимо закрыть, а B продолжить работу. Но у меня проблема в том, что A не только закрыт, но и удален, так как включается также установщик.
Процесс:
Установщик устанавливает как A, так и B, A - это Основная форма. Когда A запускается, он проверяет, есть ли новая версия. Если это так, A нужно запустить форму B отдельно , чтобы B мог вызвать скрипт .bat, который удалит A, и заменить его с сервера последней версией. (B - простая форма с 1 меткой - Обновление, пожалуйста, подождите). Проблема в том, что при вызове B он вызывает файл .bat, который переходит к деинсталляции. Это означает, что он также убивает A, а A также убивает B. Поэтому, когда происходит деинсталляция, пожалуйста, подождите, форма исчезла, и процесс остановился.
То, что я пробовал до сих пор, это попытка запустить B в Program.cs A в новом потоке, чтобы он был "независимым" от A, но безуспешно
var t = new System.Threading.Thread(ThreadProc);
t.Start();
Close();
public static void ThreadProc()
{
Application.Run(new B());
}
I также пытался вызвать B без потока, но как только A удаляется, B тоже умирает.
Application.Run(new B());
or
var b = new B();
Если я вручную запускаю форму B (обновление) из папки, он удаляет A и устанавливает последний. Есть ли способ достичь этого изнутри формы A, чтобы он вызывал B независимо, что затем может завершить sh процесс?