私はプログラミングが初めてです。スレッドを起動するフォーム アプリケーションがあります。そこから 4 つの新しいスレッドが立ち上げられます。これらの各スレッドは、次のような一連のコマンド ライン プロセスを実行します。
ProcessStartInfo startInfo = new ProcessStartInfo();
startInfo.WorkingDirectory ="C:\\BLA\\bin_windows";
startInfo.UseShellExecute = false;
startInfo.RedirectStandardOutput = true;
startInfo.CreateNoWindow = true;
startInfo.FileName = "SomeProcess"
Process p = Process.Start(startInfo);
p.WaitForExit();
フォーム アプリケーションが閉じられると、最初のスレッド (4 つの個別のスレッドではなく) が中止されます。今私の質問は、フォームを閉じたときにプロセス「p」を強制的に終了させる方法です?? 私は次のことを試しました:
foreach (Process p in System.Diagnostics.Process.GetProcessesByName("SomeProcess"))
{
try
{
p.Kill();
p.WaitForExit(); // possibly with a timeout
}
catch
{ continue; }
}
ただし、このアプローチは私には少し残忍に思え、常にうまく機能するとは限りません...自分で起動したプロセスだけを特定して終了する方法はありますか? どんな提案でも大歓迎です。ありがとう