DependentTransaction Klas
Definitie
Belangrijk
Bepaalde informatie heeft betrekking op een voorlopige productversie die aanzienlijk kan worden gewijzigd voordat deze wordt uitgebracht. Microsoft biedt geen enkele expliciete of impliciete garanties met betrekking tot de informatie die hier wordt verstrekt.
Beschrijft een kloon van een transactie die garantie biedt dat de transactie niet kan worden doorgevoerd totdat de toepassing in rust komt met betrekking tot het werk aan de transactie. Deze klasse kan niet worden overgenomen.
public ref class DependentTransaction sealed : System::Transactions::Transaction
public sealed class DependentTransaction : System.Transactions.Transaction
[System.Serializable]
public sealed class DependentTransaction : System.Transactions.Transaction
type DependentTransaction = class
inherit Transaction
[<System.Serializable>]
type DependentTransaction = class
inherit Transaction
Public NotInheritable Class DependentTransaction
Inherits Transaction
- Overname
- Kenmerken
Voorbeelden
In het volgende voorbeeld ziet u hoe u een afhankelijke transactie maakt.
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();
}
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
Opmerkingen
Dit DependentTransaction is een kloon van een Transaction object dat is gemaakt met behulp van de DependentClone methode. Het enige doel is om de toepassing in rust te laten komen en te garanderen dat de transactie niet kan worden doorgevoerd terwijl het werk nog steeds wordt uitgevoerd op de transactie (bijvoorbeeld op een werkrolthread).
Wanneer het werk dat binnen de gekloonde transactie is voltooid en klaar is om te worden doorgevoerd, kan deze de maker van de transactie informeren met behulp van de Complete methode. Zo kunt u de consistentie en juistheid van gegevens behouden.
De DependentCloneOption opsomming wordt gebruikt om het gedrag van doorvoering te bepalen. Met dit gedragsbeheer kan een toepassing in rust komen en kan gelijktijdigheid worden ondersteund. Zie Gelijktijdigheid beheren met DependentTransaction voor meer informatie over hoe deze opsomming wordt gebruikt.
Eigenschappen
| Name | Description |
|---|---|
| IsolationLevel |
Hiermee haalt u het isolatieniveau van de transactie op. (Overgenomen van Transaction) |
| PromoterType |
Identificeer de indeling van de |
| TransactionInformation |
Hiermee haalt u aanvullende informatie over een transactie op. (Overgenomen van Transaction) |
Methoden
| Name | Description |
|---|---|
| Clone() |
Hiermee maakt u een kloon van de transactie. (Overgenomen van Transaction) |
| Complete() |
Pogingen om de afhankelijke transactie te voltooien. |
| DependentClone(DependentCloneOption) |
Hiermee maakt u een afhankelijke kloon van de transactie. (Overgenomen van Transaction) |
| Dispose() |
Publiceert de resources die door het object worden bewaard. (Overgenomen van Transaction) |
| EnlistDurable(Guid, IEnlistmentNotification, EnlistmentOptions) |
Hiermee wordt een duurzame resourcemanager opgenomen die ondersteuning biedt voor twee fasen om deel te nemen aan een transactie. (Overgenomen van Transaction) |
| EnlistDurable(Guid, ISinglePhaseNotification, EnlistmentOptions) |
Neemt een duurzame resourcemanager op die ondersteuning biedt voor optimalisatie van één fase voor doorvoeren om deel te nemen aan een transactie. (Overgenomen van Transaction) |
| EnlistPromotableSinglePhase(IPromotableSinglePhaseNotification, Guid) |
Hiermee schakelt u een resourcemanager in die een interne transactie heeft met behulp van een promotable single phase enlistment (PSPE). (Overgenomen van Transaction) |
| EnlistPromotableSinglePhase(IPromotableSinglePhaseNotification) |
Hiermee schakelt u een resourcemanager in die een interne transactie heeft met behulp van een promotable single phase enlistment (PSPE). (Overgenomen van Transaction) |
| EnlistVolatile(IEnlistmentNotification, EnlistmentOptions) |
Hiermee wordt een vluchtige resourcemanager opgenomen die ondersteuning biedt voor twee fasen om deel te nemen aan een transactie. (Overgenomen van Transaction) |
| EnlistVolatile(ISinglePhaseNotification, EnlistmentOptions) |
Neemt een vluchtige resourcemanager op die ondersteuning biedt voor optimalisatie van één fase voor doorvoeren om deel te nemen aan een transactie. (Overgenomen van Transaction) |
| Equals(Object) |
Bepaalt of deze transactie en het opgegeven object gelijk zijn. (Overgenomen van Transaction) |
| GetHashCode() |
Retourneert de hash-code voor dit exemplaar. (Overgenomen van Transaction) |
| GetPromotedToken() |
Hiermee haalt u de |
| GetType() |
Hiermee haalt u de Type huidige instantie op. (Overgenomen van Object) |
| MemberwiseClone() |
Hiermee maakt u een ondiepe kopie van de huidige Object. (Overgenomen van Object) |
| PromoteAndEnlistDurable(Guid, IPromotableSinglePhaseNotification, ISinglePhaseNotification, EnlistmentOptions) |
Bevordert en neemt een duurzame resourcemanager op die ondersteuning biedt voor twee fasen om deel te nemen aan een transactie. (Overgenomen van Transaction) |
| Rollback() |
Hiermee wordt de transactie teruggedraaid (afgebroken). (Overgenomen van Transaction) |
| Rollback(Exception) |
Hiermee wordt de transactie teruggedraaid (afgebroken). (Overgenomen van Transaction) |
| SetDistributedTransactionIdentifier(IPromotableSinglePhaseNotification, Guid) |
Hiermee stelt u de gedistribueerde transactie-id in die is gegenereerd door de niet-MSDTC-organisator. (Overgenomen van Transaction) |
| ToString() |
Retourneert een tekenreeks die het huidige object vertegenwoordigt. (Overgenomen van Object) |
gebeurtenis
| Name | Description |
|---|---|
| TransactionCompleted |
Geeft aan dat de transactie is voltooid. (Overgenomen van Transaction) |
Expliciete interface-implementaties
| Name | Description |
|---|---|
| ISerializable.GetObjectData(SerializationInfo, StreamingContext) |
Haalt een SerializationInfo op met de gegevens die nodig zijn om deze transactie te serialiseren. (Overgenomen van Transaction) |
Van toepassing op
Veiligheid thread
Dit type is thread veilig.