Альтернативы использованию транзакционной NTFS
Учитывая, что Microsoft имеетустарела Транзакционная NTFS (TxF):
Microsoft настоятельно рекомендует разработчикам использовать альтернативные средства для достижения вашего приложенияпотребности. Многие сценарии, для которых был разработан TxF, могут быть реализованы с помощью более простых и доступных методов. Кроме того, TxF может быть недоступен в будущих версиях Microsoft Windows.
Хотя TxF является мощным набором API, интерес к этой платформе API со стороны Windows Vista крайне ограничен интересами разработчиков, прежде всего из-за ее сложности и различных нюансов, которые разработчики должны учитывать при разработке приложений. В результате Microsoft рассматривает возможность отказа от API TxF в будущей версии Windows, чтобы сосредоточить усилия на разработке и обслуживании на других функциях и API, которые имеют большую ценность для подавляющего большинства клиентов.
Это означает, что мне нужна альтернатива:
CreateTransaction
MoveFileTransacted
CommitTransaction
Мои транзакционные требования довольно просты - переместите два файла:
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);
}
За исключением того, что я надеялся нахорошо Решение, а не глючит.