Method1()
が をインスタンス化し、それが も をインスタンス化する をTransactionScope
呼び出す場合、.NET はどのようにして両方が同じスコープ内にあることを認識するのでしょうか? 内部的には静的メソッドを使用しないと思います。そうしないと、ASP.NET のようなマルチスレッド アプリケーションではうまく動作しません。Method2()
TransactionScope
独自の TransactionScope のようなクラスを作成することは可能ですか? それとも、元のクラスでは、Microsoft だけが動作方法を知っている特殊な機能が使用されていますか?
ベストアンサー1
お役に立てれば:
http://msdn.microsoft.com/en-us/magazine/cc300805.aspx
TransactionScope についてよく知らない方のために説明すると、これは Microsoft® .NET Framework 2.0 に新しく追加された System.Transactions 名前空間の一部です。System.Transactions は、ADO.NET に限らず、.NET Framework に完全に統合されたトランザクション フレームワークを提供します。Transaction クラスと TransactionScope クラスは、この名前空間で最も重要な 2 つのクラスです。質問が示唆しているように、TransactionScope インスタンスを作成すると、その TransactionScope のスコープ内で実行される ADO.NET 操作が自動的に登録されます (Transaction.Current 静的プロパティを使用して現在の Transaction にアクセスすることもできます)。
using(TransactionScope scope = new TransactionScope()) { ... // all operations here part of a transaction scope.Complete(); }