鉴于微软已经废弃了Transactional NTFS (TxF):
微软强烈建议开发者使用替代方法来实现应用程序的需求。许多TxF为之开发的场景可以通过更简单、更易得的技术来实现。此外,TxF可能在未来的Windows版本中不再可用。
虽然TxF是一组强大的API,但自Windows Vista以来,由于其复杂性和各种细微差别,开发人员对这个API平台的兴趣极为有限,这导致微软正在考虑在未来的Windows版本中废弃TxF API,将开发和维护工作集中在其他具有更大价值的功能和API上,以满足更多客户的需求。
这意味着我需要一个替代方案:
微软强烈建议开发者使用替代方法来实现应用程序的需求。许多TxF为之开发的场景可以通过更简单、更易得的技术来实现。此外,TxF可能在未来的Windows版本中不再可用。
虽然TxF是一组强大的API,但自Windows Vista以来,由于其复杂性和各种细微差别,开发人员对这个API平台的兴趣极为有限,这导致微软正在考虑在未来的Windows版本中废弃TxF API,将开发和维护工作集中在其他具有更大价值的功能和API上,以满足更多客户的需求。
这意味着我需要一个替代方案:
我的事务要求非常简单 - 移动两个文件:
tx = BeginTransaction();
{
MoveFile(testResults, testResultsArchive); //throws if there's a problem
MoveFile(cdcResponse, cdcResponseArchive); //throws if there's a problem
CommitTransaction(tx);
}
finally
{
CloseHandle(tx);
}
我考虑将 MoveFile
转化为 CopyFile
+ DeleteFile
:
CopyFile(testResults, testResultsArchive); //throws if there's a problem
CopyFile(cdcResponse, cdcResponseArchive); //throws if there's a problem
DeleteFile(testResults);
DeleteFile(cdcResponse);
但我希望得到一个好的解决方案,而不是有缺陷的解决方案。所以我再试一次:
CopyFile(testResults, testResultsArchive); //throws if there's a problem
CopyFile(cdcResponse, cdcResponseArchive); //throws if there's a problem
try
{
DeleteFile(testResults);
}
catch (Exception e)
{
DeleteFile(testResultsArchive);
throw e;
}
try
{
DeleteFile(cdcResponse);
}
catch (Exception e)
{
DeleteFile(cdcResponseArchive);
}
除非我希望得到一个好的解决方案,而不是有漏洞的方案。