本文档已存档,并且将不进行维护。

TransactionCompletedEventHandler 委托

更新:2007 年 11 月

表示处理 Transaction 类的 TransactionCompleted 事件的方法。

命名空间:  System.Transactions
程序集:  System.Transactions(在 System.Transactions.dll 中)

public delegate void TransactionCompletedEventHandler(
	Object sender,
	TransactionEventArgs e
)
/** @delegate */
public delegate void TransactionCompletedEventHandler(
	Object sender,
	TransactionEventArgs e
)
JScript 不支持委托。

参数

sender
类型:System.Object

事件源。

e
类型:System.Transactions.TransactionEventArgs

包含事件数据的 TransactionEventArgs

下面的示例演示应用程序如何通过订阅 TransactionCompleted 事件获得事务结果。

		static void Main(string[] args)
		{
			try
			{
				//Create the transaction scope
				using (TransactionScope scope = new TransactionScope())
				{
					//Register for the transaction completed event for the current transaction
					Transaction.Current.TransactionCompleted += new TransactionCompletedEventHandler(Current_TransactionCompleted);

					//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'))
						{
							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;
			}
		}

		//Transaction completed event handler
		static void Current_TransactionCompleted(object sender, TransactionEventArgs e)
		{
			Console.WriteLine("A transaction has completed:");
			Console.WriteLine("ID:             {0}", e.Transaction.TransactionInformation.LocalIdentifier);
			Console.WriteLine("Distributed ID: {0}", e.Transaction.TransactionInformation.DistributedIdentifier);
			Console.WriteLine("Status:         {0}", e.Transaction.TransactionInformation.Status);
			Console.WriteLine("IsolationLevel: {0}", e.Transaction.IsolationLevel);
		}


		static void Main(string[] args)
		{
			try
			{
				//Create the transaction scope
				using (TransactionScope scope = new TransactionScope())
				{
					//Register for the transaction completed event for the current transaction
					Transaction.Current.TransactionCompleted += new TransactionCompletedEventHandler(Current_TransactionCompleted);

					//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'))
						{
							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;
			}
		}

		//Transaction completed event handler
		static void Current_TransactionCompleted(object sender, TransactionEventArgs e)
		{
			Console.WriteLine("A transaction has completed:");
			Console.WriteLine("ID:             {0}", e.Transaction.TransactionInformation.LocalIdentifier);
			Console.WriteLine("Distributed ID: {0}", e.Transaction.TransactionInformation.DistributedIdentifier);
			Console.WriteLine("Status:         {0}", e.Transaction.TransactionInformation.Status);
			Console.WriteLine("IsolationLevel: {0}", e.Transaction.IsolationLevel);
		}


Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表,请参见.NET Framework 系统要求

.NET Framework

受以下版本支持:3.5、3.0、2.0
显示: