如何更快地执行文件操作而不例外?

时间:2011-11-21 10:32:40

标签: c# winforms file-io

我开发了一个应用程序来为我的项目执行一些后端文件操作。

应用程序将编写一个二进制文件,并在其中执行某些操作,这会导致创建另一个文件。 然后我会读取输出文件来更新我的数据库。

例如,考虑我会写一个ABC.bin文件,输出文件是XYZ.bin

所有上述行动都将在10毫秒内完成。并且我将继续相同的过程多次,例如100次。

现在,问题是我遇到了一些例外情况,例如找不到文件,从源代码运行我的应用程序时拒绝访问。

但是在将应用程序作为可执行文件(.exe)后,我没有得到相同的异常。

两种情况都发生了什么?为什么在将其作为可执行文件后仍然没有发生同样的事情?

1 个答案:

答案 0 :(得分:1)

你可以做的事情很少:

  • 如果您只是在调试器下看到异常,而不是在运行独立可执行文件时,请检查Visual Studio中的异常设置。转到Debug -> Exceptions ...并确保取消选中Thrown中的所有内容

  • 调查在开始复制之前使用File.Exists方法查询文件是否存在会更快(这当然只能解决FileNotFoundException

  • 在try-catch块中包装复制循环,而不是包装循环内部的代码。像这样:

    List<string> fileNames = new List<string>() { "file1.txt", "file2.txt", ... };
    int i = 0;
    try
    {
        for (i = 0; i < fileNames.Count; i++)
            // do copying here
    }
    catch (Exception ex)
    {
      // log exception
    }
    // You can decide if to return to copying rest of the files here, from i+1
    

这样做是为了避免为每个文件输入和退出try块。