我正在开发一个文件管理器应用程序。这些文件通常为 500MB 到 2GB。一切正常,但非常烦人的是应用程序“停止响应”。我想做的是在每次读/写操作后,逐字节或逐兆复制,其中包含一些 Application.DoEvents() 。按照这些思路,我不知道实际使用的类是什么,所以我只是想编一些东西:)
private void CopyFile(string inFilename, string outFilename)
{
FileReader inReader(inFilename);
FileWriter outWriter(outFilename, FileMode.OpenOrCreate);
byte theByte;
while (theByte = inReader.ReadByte())
{
outWriter.WriteByte(theByte, WriteMode.Append);
UpdateProgressBar();
Application.DoEvents();
}
inReader.CloseFile();
outWriter.CloseFile();
}
我知道这看起来应该是一件简单的事情,但我这辈子似乎找不到任何类型的示例来执行此操作而不使用直接 API 调用或其他任何方式。我必须在这里遗漏一些东西,所以如果有人能让我走上正确的轨道,我将非常感激。
提前致谢!
最佳答案
你应该使用 BackgroundWorker在您的表格上进行复制。它将允许文件副本在单独的线程上完成,并让您的 UI 响应。这会增加一些复杂性,但 BackgroundWorker 会为您处理很多管道。但是,有很多 examples的 what you want to do .
关于c# - 复制大文件时Forms application "Not Responding"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/844482/