我有运行Tshark
进程的应用程序。
每个进程在磁盘上创建文件(Wireshark文件)。
用户决定将特定文件kill命令集保存到应用程序后,进程终止。
在引发Procees.Exited
事件之后,刚刚创建的文件复制到磁盘上的另一个位置。
此时我想删除旧文件,但在大多数情况下得到IOException
该文件,因为它正由另一个进程使用。
private void CopyFile(MyClass tsharkFile)
{
try
{
string oldFile = ...
string newFile = ...
File.Copy(oldFile, newFile);
File.Delete(oldFile);
}
catch (IOException)
{
status = "Failed to delete file";
}
}
在Procees.Exited
事件引发后调用上述函数并且该进程不存在。
这是杀戮过程的功能:
private void KillTshatkProcess(int processId)
{
lock (_list) //
{
foreach (tsharkFile tsh in _list)
{
if (tsh.processId == processId)
{
Process process = Process.GetProcessById(tsh.processId);
if (process != null)
{
process.Kill();
process.WaitForExit();
}
}
}
}
}
有某种方式等待并确保我的Process
已经死亡,然后删除该文件?