IOException该进程无法访问该文件,因为该文件正由另一个进程使用

时间:2013-10-05 09:43:05

标签: c#

我有运行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已经死亡,然后删除该文件?

0 个答案:

没有答案