호출 프로세스가 종료 된 경우에도 자체적으로 정리할 새 프로세스를 만들고 싶습니다. 메모장을 사용하여 임시 파일을 표시하는 예제를 조롱했습니다. 메모장을 닫은 후에 삭제하고 싶습니다.그 자체 후에 항상 정리할 프로세스를 생성 할 수 있습니까?
아래 코드에서 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