2

私はこのようなコードを持っています:

ProcessStartInfo psi= new ProcessStartInfo(...);
Process process = Process.Start(psi);
Application.Current.Shutdown();

それでもprocess、まれにアプリケーションのプロセス情報があります(ログがあります)。本番コンピューターでは、プロセスがまったく開かれていません。

現在、 Process.Start() は同期的であり、値を返す場合は実行中のプロセスが必要です。

私が持っているもう 1 つの情報は、正規のプロセスもシェル プロセスであるということです。

何が問題なのか誰にも分かりますか?

4

1 に答える 1

2

プロセスは IO アーティファクトであるため、開始してから実際に開くまでには常に遅延が発生します。

この遅延は当然、コードを実行する具体的なマシンに依存します。

だから、あなたができる解決策のように

  • または、プロセスが開かれるまでメインスレッドpをしばらくスリープさせます

  • pまたは、(たとえば)いくつかのタイマーから、すでに実行されているOSプロセスのリストで必要なプロセスを見つけることができる場合にのみ、メインスレッドを閉じます。

2番目は、より良い解決策だと思います。

于 2013-02-19T08:27:47.313 に答える