maurodefilippis Ответов: 1

Постоянный процесс C# после закрытия приложения


Привет,
Я создаю приложение c#, которое выполняет какую-то операцию и запускает одно или несколько внешних приложений
с

string pathMyApp = ......external executable
ProcessStartInfo startInfo = new ProcessStartInfo() { FileName = "pathMyApp", Arguments = ......someAppParameter, };
proc = new Process() { StartInfo = startInfo, };
proc.Start()


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

Можно ли закрыть мое основное приложение и продолжить выполнение дочернего приложения?


Теперь я поставил readkey в конце основного приложения, чтобы предотвратить конец, но это не очень хорошо.
есть какое-нибудь решение?
благодарения

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

I've tried with
<pre lang="C#">ThreadStart ths = new ThreadStart(() =&gt; proc.Start());
           Thread th = new Thread(ths);
           th.Start();</pre>

too, but is the same.

Rob Philpott

Это меня смущает. То, что вы описываете, не соответствует тому, что я понял, и действительно, когда я пишу простое консольное приложение, которое запускает блокнот, Блокнот остается, когда консольное приложение умирает.

Что это за процессы, которые вы пытаетесь запустить? Консоль / Windows / Службы?

[no name]

Я еще не проверял его, но вы можете попробовать UseShellExecute = true

1 Ответов

Рейтинг:
2

OriginalGriff

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

Я подозреваю, что вам нужно еще раз взглянуть на свой код, так как я не думаю, что он работает так, как вы думаете!