文件事物管理Transactional File Manager的实例详解
推荐一个文件事物管理 Transactional File Manager
Project Description
Transactional File Manager is a .NET API that supports including file system operations such as file copy, move, delete, append, etc. in a transaction. It's an implementation of System.Transaction.IEnlistmentNotification (works with System.Transactions.TransactionScope).
This library allows you to wrap file system operations in transactions like this:
// Wrap a file copy and a database insert in the same transactionTxFileManager fileMgr = new TxFileManager();using (TransactionScope scope1 = new TransactionScope()) {// Copy a file fileMgr.Copy(srcFileName, destFileName);// Insert a database record dbMgr.ExecuteNonQuery(insertSql);scope1.Complete(); }
Current Features
Support the following file operations in transactions:
AppendAllText
Copy
CreateDirectory
DeleteDirectory
DeleteFile
Move
Snapshot
WriteAllText
WriteAllBytes
This library supports any file system and is not a wrapper over Transactional NTFS (see AlphaFS).
Examples
// Completely unrealistic example showing how various file operations, including operations done // by library/3rd party code, can participate in transactions.IFileManager fileManager = new TxFileManager();using (TransactionScope scope1 = new TransactionScope()) { fileManager.WriteAllText(inFileName, xml); // Snapshot allows any file operation to be part of our transaction. // All we need to know is the file name. //The statement below tells the TxFileManager to remember the state of this file. // So even though XslCompiledTransform has no knowledge of our TxFileManager, the file it creates (outFileName) // will still be restored to this state in the event of a rollback. fileManager.Snapshot(outFileName); XslCompiledTransform xsl = new XslCompiledTransform(true); xsl.Load(uri); xsl.Transform(inFileName, outFileName); // write to database 1. This database op will get committed/rolled back along with the file operations we are doing in this transaction. myDb1.ExecuteNonQuery(sql1); // write to database 2. The transaction is promoted to a distributed transaction here. myDb2.ExecuteNonQuery(sql2); // let's delete some files for (string fileName in filesToDelete) { fileManager.Delete(fileName); } // Just for kicks, let's start a new nested transaction. Since we specify RequiresNew here, this nested transaction // will be committed/rolled back separately from the main transaction. // Note that we can still use the same fileManager instance. It knows how to sort things out correctly. using (TransactionScope scope2 = new TransactionScope(TransactionScopeOptions.RequiresNew)) { fileManager.MoveFile(anotherFile, anotherFileDest); } // move some files for (string fileName in filesToMove) { fileManager.Move(fileName, GetNewFileName(fileName)); } // Finally, let's create a few temporary files... // disk space has to be used for something. // The nice thing about FileManager.GetTempFileName is that // The temp file will be cleaned up automatically for you when the TransactionScope completes. // No more worries about temp files that get left behind. for (int i=0; i<10; i++) { fileManager.WriteAllText(fileManager.GetTempFileName(), "testing 1 2"); } scope1.Complete(); // In the event an exception occurs, everything done here will be rolled back including the output xsl file.}
这是一个开源项目。原始项目网站是 事务文件管理器。
版权所有(c)2008-2013 Chinh Do
特此授予任何获得本软件和相关文档文件(“软件”)副本的人免费许可,无限制地处理本软件,包括但不限于使用,复制,修改,合并的权利,发布,分发,再授权和/或出售本软件的副本,并允许提供本软件的人员遵守以下条件:
上述版权声明和本许可声明应包含在本软件的所有副本或主要部分。
该软件“按原样”提供,不附带任何明示或暗示的保证,包括但不限于适销性,适用于特定用途和不侵权的保证。在任何情况下,作者或版权所有者均不对任何索赔,损害或其他责任负责,无论是否因与本软件或本软件的使用或其他交易相关的任何合同,侵权行为或其他方面的行为软件。
Atas ialah kandungan terperinci 文件事物管理Transactional File Manager的实例详解. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Panduan untuk Active Directory dengan C#. Di sini kita membincangkan pengenalan dan cara Active Directory berfungsi dalam C# bersama-sama dengan sintaks dan contoh.

Panduan kepada Pengubahsuai Akses dalam C#. Kami telah membincangkan Pengenalan Jenis Pengubahsuai Akses dalam C# bersama-sama dengan contoh dan output.

Panduan untuk Penjana Nombor Rawak dalam C#. Di sini kita membincangkan cara Penjana Nombor Rawak berfungsi, konsep nombor pseudo-rawak dan selamat.

Panduan untuk Paparan Grid Data C#. Di sini kita membincangkan contoh cara paparan grid data boleh dimuatkan dan dieksport daripada pangkalan data SQL atau fail excel.

Panduan untuk C# StringReader. Di sini kita membincangkan gambaran keseluruhan ringkas tentang C# StringReader dan berfungsi bersama-sama dengan Contoh dan Kod yang berbeza.

Panduan kepada Corak dalam C#. Di sini kita membincangkan pengenalan dan 3 jenis Corak teratas dalam C# bersama-sama dengan contoh dan pelaksanaan kodnya.

Panduan untuk Pensirian C#. Di sini kita membincangkan pengenalan, langkah-langkah objek siri C#, kerja, dan contoh masing-masing.

Panduan untuk C# StringWriter. Di sini kita membincangkan gambaran ringkas tentang Kelas C# StringWriter dan kerjanya bersama-sama dengan Contoh dan Kod yang berbeza.
