私はdistでファイルを開いて作成し、このproceesにサブスクライブするプロセスを持っていますProcessExitedEvent
:
public int InvokeProcess(WiresharkProcesses process, string args)
{
try
{
string processToInvoke = null;
ProcessStartInfo startInfo = new ProcessStartInfo();
Process pros = new Process();
startInfo .FileName = processToInvoke;
startInfo .RedirectStandardOutput = true;
startInfo .RedirectStandardError = true;
startInfo .RedirectStandardInput = true;
startInfo .UseShellExecute = false;
startInfo .CreateNoWindow = true;
startInfo .Arguments = args;
pros.StartInfo = startInfo ;
pros.ErrorDataReceived += pros_ErrorDataReceived;
pros.OutputDataReceived += pros_OutputDataReceived;
pros.Exited += (object sender, EventArgs e) =>
{
if (ProcessExitedEvent != null)
ProcessExitedEvent(pros.Id);
};
pros.EnableRaisingEvents = true;
pros.Start();
pros.BeginOutputReadLine();
pros.BeginErrorReadLine();
return pros.Id;
}
catch (Exception)
{
return -1;
}
}
private void ProcessExitedEvent(int processId)
{
// Copy file
// Delete file
}
このプロセスはディスク上にファイルを作成し、イベントが発生した後ProcessExitedEvent
、このファイルを別の場所にコピーして古いファイルを削除したいのですが、プロセスの終了後にイベントが発生しましたが、ファイルがまだ残っているため、私のコードは古いファイルを削除できませんでしたusing block
このブロックを配置する必要がある場所に soを使用してプロセスが停止するようにしたい