DependentTransaction イベント
DependentTransaction クラス
アセンブリ: System.Transactions (system.transactions.dll 内)

<SerializableAttribute> _ Public NotInheritable Class DependentTransaction Inherits Transaction
[SerializableAttribute] public sealed class DependentTransaction : Transaction
/** @attribute SerializableAttribute() */ public final class DependentTransaction extends Transaction
SerializableAttribute public final class DependentTransaction extends Transaction

DependentTransaction は、DependentClone メソッドを使用して作成される Transaction オブジェクトの複製です。この複製の唯一の目的は、アプリケーションの停止を許可し、ワーカー スレッドなどでトランザクションの作業が実行されている間、トランザクションをコミットできないようにすることです。
複製されたトランザクション内で作業が完了し、コミットが可能になると、Complete メソッドを使用して、そのトランザクションの作成者に通知できます。これにより、データの一貫性と正確さを保持できます。
DependentCloneOption 列挙体は、コミットの動作を判断するために使用されます。この動作制御により、アプリケーションを停止できるだけでなく、同時実行もサポートできます。この列挙体の使用方法の詳細については、「DependentTransaction を使用した同時実行管理」を参照してください。

Public Shared Sub Main() Try Using scope As TransactionScope = New TransactionScope() 'Perform transactional work here. 'Queue work item ThreadPool.QueueUserWorkItem(AddressOf WorkerThread, Transaction.Current.DependentClone(DependentCloneOption.BlockCommitUntilComplete)) 'Display transaction information Console.WriteLine("Transaction information:") Console.WriteLine("ID: {0}", Transaction.Current.TransactionInformation.LocalIdentifier) Console.WriteLine("status: {0}", Transaction.Current.TransactionInformation.Status) Console.WriteLine("isolationlevel: {0}", Transaction.Current.IsolationLevel) 'Call Complete on the TransactionScope based on console input Dim c As ConsoleKeyInfo While (True) Console.Write("Complete the transaction scope? [Y|N] ") c = Console.ReadKey() Console.WriteLine() If (c.KeyChar = "Y") Or (c.KeyChar = "y") Then scope.Complete() Exit While ElseIf ((c.KeyChar = "N") Or (c.KeyChar = "n")) Then Exit While End If End While End Using Catch ex As TransactionException Console.WriteLine(ex) Catch Console.WriteLine("Cannot complete transaction") Throw End Try End Sub Public Shared Sub WorkerThread(ByVal myTransaction As Object) 'Create a DependentTransaction from the object passed to the WorkerThread Dim dTx As DependentTransaction dTx = CType(myTransaction, DependentTransaction) 'Sleep for 1 second to force the worker thread to delay Thread.Sleep(1000) 'Pass the DependentTransaction to the scope, so that work done in the scope becomes part of the transaction passed to the worker thread Using ts As TransactionScope = New TransactionScope(dTx) 'Perform transactional work here. 'Call complete on the transaction scope ts.Complete() End Using 'Call complete on the dependent transaction dTx.Complete() End Sub
static void Main(string[] args) { try { using (TransactionScope scope = new TransactionScope()) { // Perform transactional work here. //Queue work item ThreadPool.QueueUserWorkItem(new WaitCallback(WorkerThread), Transaction.Current.DependentClone(DependentCloneOption.BlockCommitUntilComplete)); //Display transaction information Console.WriteLine("Transaction information:"); Console.WriteLine("ID: {0}", Transaction.Current.TransactionInformation.LocalIdentifier); Console.WriteLine("status: {0}", Transaction.Current.TransactionInformation.Status); Console.WriteLine("isolationlevel: {0}", Transaction.Current.IsolationLevel); //Call Complete on the TransactionScope based on console input ConsoleKeyInfo c; while (true) { Console.Write("Complete the transaction scope? [Y|N] "); c = Console.ReadKey(); Console.WriteLine(); if ((c.KeyChar == 'Y') || (c.KeyChar == 'y')) { //Call complete on the scope scope.Complete(); break; } else if ((c.KeyChar == 'N') || (c.KeyChar == 'n')) { break; } } } } catch (System.Transactions.TransactionException ex) { Console.WriteLine(ex); } catch { Console.WriteLine("Cannot complete transaction"); throw; } } private static void WorkerThread(object transaction) { //Create a DependentTransaction from the object passed to the WorkerThread DependentTransaction dTx = (DependentTransaction)transaction; //Sleep for 1 second to force the worker thread to delay Thread.Sleep(1000); //Pass the DependentTransaction to the scope, so that work done in the scope becomes part of the transaction passed to the worker thread using (TransactionScope ts = new TransactionScope(dTx)) { //Perform transactional work here. //Call complete on the transaction scope ts.Complete(); } //Call complete on the dependent transaction dTx.Complete(); }

System.Transactions.Transaction
System.Transactions.DependentTransaction


Windows 98, Windows 2000 SP4, Windows Millennium Edition, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


DependentTransaction プロパティ

名前 | 説明 | |
---|---|---|
![]() | Current | アンビエント トランザクションを取得または設定します。 ( Transaction から継承されます。) |
![]() | IsolationLevel | トランザクションの分離レベルを取得します。 ( Transaction から継承されます。) |
![]() | TransactionInformation | トランザクションの追加情報を取得します。 ( Transaction から継承されます。) |

DependentTransaction メソッド


名前 | 説明 | |
---|---|---|
![]() | Finalize | Object がガベージ コレクションにより収集される前に、その Object がリソースを解放し、その他のクリーンアップ操作を実行できるようにします。 ( Object から継承されます。) |
![]() | MemberwiseClone | 現在の Object の簡易コピーを作成します。 ( Object から継承されます。) |

DependentTransaction メンバ
トランザクションの作業に関してアプリケーションが停止するまで、トランザクションをコミットできないようにする、トランザクションの複製を記述します。このクラスは継承できません。
DependentTransaction データ型で公開されるメンバを以下の表に示します。

名前 | 説明 | |
---|---|---|
![]() | Current | アンビエント トランザクションを取得または設定します。(Transaction から継承されます。) |
![]() | IsolationLevel | トランザクションの分離レベルを取得します。(Transaction から継承されます。) |
![]() | TransactionInformation | トランザクションの追加情報を取得します。(Transaction から継承されます。) |


名前 | 説明 | |
---|---|---|
![]() | Finalize | Object がガベージ コレクションにより収集される前に、その Object がリソースを解放し、その他のクリーンアップ操作を実行できるようにします。 (Object から継承されます。) |
![]() | MemberwiseClone | 現在の Object の簡易コピーを作成します。 (Object から継承されます。) |


- DependentTransactionのページへのリンク