This question already has an answer here:
I've been using TransactionScope to work with the database and it feels nice. What I'm looking for is the following:
using(var scope=new TransactionScope())
{
// Do something with a few files...
scope.Complete();
}
but obviously this doesn't work -- if there are 20 files, and an exception occurs on the 9th file, all previous 8 remain changed and the rest unchanged -- no rollback is performed. So, what would be the best way to implement a scope-like behavior for files?
I'm hoping there is a simple answer, but if not, could you just give me a few pointers, or point me to an related article?
You can try the .NET Transactional File Manager library available on Codeplex and NuGet. It supports any file system and is not a wrapper over Transactional NTFS.
From the project description:
You're looking for Transactional NTFS, introduced by Windows Vista.
Here is a managed wrapper.