.net NET下的原子文件复制

.net NET下的原子文件复制,.net,file-transfer,robustness,atomicity,.net,File Transfer,Robustness,Atomicity,我正在构建一个服务器应用程序,它使用System.IO.File.Copy(…)函数复制文件。我的文件可能相当大,因此,如果机器崩溃,很有可能发生在复制过程中 重新启动服务后,我应该能够选择复制任务并继续。如何检测复制是否已成功完成或因服务器崩溃而中断 我目前的计划是将文件复制到一个临时名称,复制完成后将其重命名为最终名称。这样,文件命名就能够在崩溃期间携带状态信息 你有什么好的/更好的建议吗 编辑:目标操作系统是Win2003,因此事务性NTFS不可用较新版本的Windows允许您使用。其他人

我正在构建一个服务器应用程序,它使用System.IO.File.Copy(…)函数复制文件。我的文件可能相当大,因此,如果机器崩溃,很有可能发生在复制过程中

重新启动服务后,我应该能够选择复制任务并继续。如何检测复制是否已成功完成或因服务器崩溃而中断

我目前的计划是将文件复制到一个临时名称,复制完成后将其重命名为最终名称。这样,文件命名就能够在崩溃期间携带状态信息

你有什么好的/更好的建议吗


编辑:目标操作系统是Win2003,因此事务性NTFS不可用

较新版本的Windows允许您使用。

其他人建议使用事务性NTFS,如果您在Vista或更高版本上部署,这是可以的。如果您需要支持XP(或更早版本),那么移动(重命名)后的临时文件是最好的解决方案

此类似问题的答案提供了更多信息: 退房。它提供了作业机制,即使在重新启动后也可以暂停和恢复作业

以下是一些如何将其与.NET一起使用的示例:

另请参见: