Alternativas al uso de NTFS transaccional
Dado que Microsoft tieneNTFS transaccional en desuso (TxF):
Microsoft recomienda encarecidamente a los desarrolladores que utilicen medios alternativos para satisfacer las necesidades de su aplicación. Muchos escenarios para los que se desarrolló TxF se pueden lograr a través de técnicas más simples y más fácilmente disponibles. Además, es posible que TxF no esté disponible en futuras versiones de Microsoft Windows.
Si bien TxF es un poderoso conjunto de API, ha habido un interés muy limitado por parte de los desarrolladores en esta plataforma desde Windows Vista, principalmente debido a su complejidad y los diversos matices que los desarrolladores deben considerar como parte del desarrollo de aplicaciones. Como resultado, Microsoft está considerando despreciar las API de TxF en una versión futura de Windows para enfocar los esfuerzos de desarrollo y mantenimiento en otras funciones y API que tienen más valor para la mayoría de los clientes.
Esto significa que necesito una alternativa a:
CreateTransaction
MoveFileTransacted
CommitTransaction
Mis requisitos de transacciones son bastante simples: mueva dos archivos:
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);
}
he pensado en girarMoveFile
dentroCopyFile
+ DeleteFile
:
CopyFile(testResults, testResultsArchive); //throws if there's a problem
CopyFile(cdcResponse, cdcResponseArchive); //throws if there's a problem
DeleteFile(testResults);
DeleteFile(cdcResponse);
Pero esperaba unbueno Solución, no una solución de buggy. Así que intento de nuevo:
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);
}
Excepto que esperaba unabueno Solución, no un buggy.