代码之家  ›  专栏  ›  技术社区  ›  Steffen

限制文件速度。复制

  •  11
  • Steffen  · 技术社区  · 15 年前

    我们正在使用一个简单的文件.Copy in C#将数据库备份移动到其他位置。

    但是,在某些服务器上,这会导致SQL server几乎停止工作。这些服务器的内存非常有限,因此它们经常将数据分页到硬盘驱动器。

    当我们 应该 购买更多内存,这种情况在很长时间内都不会发生:-/

    4 回复  |  直到 15 年前
        1
  •  7
  •   Jaroslav Jandek    15 年前

    CopyFileEx 它有一个回调函数,你可以把它当作一个人工函数 slowing method

        2
  •  2
  •   Dirk Vollmar    15 年前

    您是否尝试过将复制过程的优先级设置为低于正常值?您可以通过任务管理器或使用 start 命令:

    > start myCopyApp.exe /BELOWNORMAL
    
        3
  •  2
  •   Adam Houldsworth    15 年前

    一个无法通过File.Copy获得。你还有很多其他的选择。正如您所说的,您可以手动地流式传输字节,偶尔也可以休眠。您可以使用BITS的实现,尽管这有点复杂。

    此外,如果问题是内存-压缩文件或分块成更小的文件,稍后重建。

        4
  •  1
  •   ChrisW    15 年前

    我可以使用一种“老式”的方法,有两个流,通过缓冲区读写,两次读写之间只需睡5毫秒左右。

    如果这样做,请查看使用FILE\u FLAG\u NO\u BUFFERING标志:否则,无论应用程序缓冲区有多小,文件系统都将进行缓冲(从而导致额外的交换)。