我正在尝试让程序取消副本。因此我无法使用Microsoft.VisualBasic.FileIO.FileSystem.CopyFile
。
网络上有CopyFileEx
的一些包装,例如here。但是,我宁愿不使用我不理解的东西,也不想要任何意外的结果(或错误)。有管理的方法吗?或者也许是MS的包装器(类似于Windows API CodePack)?
感谢。
答案 0 :(得分:4)
您是否尝试过以块的形式复制流,每次检查块检查是否设置了取消,或注册了取消令牌?
例如,您可以执行以下操作:
void CopyStream(Stream inputStream, Stream outputStream)
{
var buffer = new byte[1024];
int bytesRead;
while((bytesRead = inputStream.Read(buffer, 0, buffer.Length)) > 0)
{
outputStream.Write(buffer, 0, bytesRead);
if(cancelled){
// cleanup
return;
}
}
}
答案 1 :(得分:3)
以小块读取文件并将其写入目的地。定期检查是否要求您取消,如果检测到,请停止写入并关闭文件。