私は呼び出しプロセスが終了しても、それ自身の後でクリーンアップする新しいプロセスを作成したいと思います。私はメモ帳を使用して、メモ帳を閉じた後に削除したい一時ファイルを表示する、以下の例を嘲笑しました。それ自身の後で常にクリーンアップするプロセスを作成することは可能ですか?
以下のコードでは、WaitForExit()行のコメントを解除するか、実行中の呼び出しプログラムを模倣するために無限ループに移行すると、期待通りに機能します。主な問題は、イベントがもはや処理されないため、呼び出し元のプログラムが終了したときです。
このケースを処理する方法についてお勧めします。
よろしく、
クリス
static void Main(string[] args)
{
string filename = @"c:\temp\example.txt";
if (!File.Exists(filename))
File.WriteAllText(filename, "abc");
ProcessStartInfo psi = new ProcessStartInfo("notepad", filename);
Process cmdProcess = new Process();
Process p = new Process();
psi.CreateNoWindow = true;
p.EnableRaisingEvents = true;
p.StartInfo = psi;
p.Exited += (sender, e) => { File.Delete(filename); };
p.Start();
//p.WaitForExit();
}
を**あなたが最後の行をコメントしなかった理由私は**理解していません。私はそれが呼び出し元のスレッド(すなわちあなたのプログラム)をブロックすることを知っていますが、それは正確に**あなたがしたいかもしれない** –
私は呼び出し側のスレッド(私のプログラム)は、 。 – cristobalito