独立したプロセスを作成するために静的メソッドを使用できることは知っていProcess.Start
ますが、私が直面している問題は、元のプログラムを閉じるたびに、作成したプロセスが閉じてしまうことです。
タスク マネージャー/プロセス エクスプローラーで確認したところ、プロセスがまだ階層内にあることがわかりました。そこで、cmd.exe (中間プロセスのように) を使用してそれを呼び出そうとしましたが、最終的にターゲット プログラムがプロセス ツリーから分割されました。しかし、閉店時の挙動は全く変わりませんでした。
オリジナルを閉じるためのプログラムとApplication.Current.Shutdown
同様に両方を使用してみましたが、どちらも同じ動作をします。this.Close()
私のアプリケーションは、生成されたすべてのプロセスを追跡しているようですが、そのようなものは何も書いておらず、閉じるときにそれらを強制終了しています。
なぜこれが起こっているのですか?ボタンクリックのイベントハンドラーメソッド内でプロセスを作成していますが、それが理由でしょうか? Process クラスで修正できますか、それとも低レベルのものを使用する必要がありますか?
プロセスの作成に使用されるコード:
try
{
ProcessStartInfo rn = new ProcessStartInfo();
rn.CreateNoWindow = false;
rn.UseShellExecute = true;
rn.FileName = "cmd.exe";
rn.Arguments = String.Format(" /C start {0} -t:{1} {2}", ExeFile, Pass, User);
rn.WindowStyle = ProcessWindowStyle.Hidden;
Process.Start(rn);
}
catch(Exception ec)
{
MessageBox.Show(String.Format("Unable to Start Client: {0}", ec.Message), "Error Starting Client", MessageBoxButton.OK, MessageBoxImage.Error);
}
Application.Current.Shutdown();