鉴于 Microsoft 已弃用 Transactional NTFS (TxF):
Microsoft 强烈建议开发人员使用替代方法来满足您的应用程序的需求。开发 TxF 的许多场景都可以通过更简单、更容易获得的技术来实现。此外,TxF 可能在 Microsoft Windows 的未来版本中不可用。
虽然 TxF 是一组功能强大的 API,但自 Windows Vista 以来,开发人员对该 API 平台的兴趣极为有限,这主要是由于其复杂性和开发人员在应用程序开发中需要考虑的各种细微差别。因此,Microsoft 正在考虑在未来版本的 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);
}
除了我希望有一个好的解决方案,而不是一个错误的解决方案。