代码尝试删除已在使用的文件时如何管理错误

时间:2019-02-18 13:39:29

标签: c# system.io.file

我是C#的初学者,希望您能对我有所帮助。 我必须并行运行8个代码。 七个代码每10秒写入一个文本文件。 每分钟开始时,文件将复制到另一个文件夹中。 第八条代码读取05秒每分钟复制的文件。 我的问题是,有时这7个代码可能会延迟文件的复制,并且可能会在第八个代码已打开文件时尝试删除这些文件,并生成错误System.IO.File.InternalDelete。 有人可以让我知道如何使用在VBA中使用的“下一步发生错误时恢复”这样的代码来处理此错误。

预先感谢您的贡献。

Write_Lines(Output_SERVER);

if ( Directory.Exists(PC_DIRECTORY) && (BarsOfData(1).Status == EBarState.Close || Output_Calcul > Output_Date) )
{
    if (File.Exists(PC_DIRECTORY + @"\" + FILE_NAME)) { File.Delete(PC_DIRECTORY + @"\" + FILE_NAME); }
    File.Copy(SERVER_DIRECTORY + @"\" + FILE_NAME, PC_DIRECTORY + @"\" + FILE_NAME);
}

1 个答案:

答案 0 :(得分:1)

只需尝试捕获您的File.Delete和File.Copy调用即可处理此异常:

catch (System.IO.IOException ex)

因此:

if ( Directory.Exists(PC_DIRECTORY) && (BarsOfData(1).Status == EBarState.Close || Output_Calcul > Output_Date) )
{
    try 
    {
        if (File.Exists(PC_DIRECTORY + @"\" + FILE_NAME)) 
        { 
            File.Delete(PC_DIRECTORY + @"\" + FILE_NAME);
        }
        File.Copy(SERVER_DIRECTORY + @"\" + FILE_NAME, PC_DIRECTORY + @"\" + FILE_NAME);
    } catch (System.IO.IOException ex) 
    {
        //handle the exception here 
    }
}