AsyncOperation.PostOperationCompleted(SendOrPostCallback, Object) Metoda
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Ukončí životnost asynchronní operace.
public:
void PostOperationCompleted(System::Threading::SendOrPostCallback ^ d, System::Object ^ arg);
public void PostOperationCompleted (System.Threading.SendOrPostCallback d, object arg);
public void PostOperationCompleted (System.Threading.SendOrPostCallback d, object? arg);
member this.PostOperationCompleted : System.Threading.SendOrPostCallback * obj -> unit
Public Sub PostOperationCompleted (d As SendOrPostCallback, arg As Object)
Parametry
Objekt SendOrPostCallback , který zabalí delegáta, který má být volána po ukončení operace.
- arg
- Object
Argument delegáta obsaženého v parametru d
.
Výjimky
OperationCompleted() byla dříve volána pro tento úkol.
d
je null
.
Příklady
Následující příklad kódu ukazuje použití PostOperationCompleted metody k ukončení životnosti asynchronní operace. Tento příklad kódu je součástí většího příkladu System.ComponentModel.AsyncOperationManager pro třídu .
// This method cancels a pending asynchronous operation.
public void CancelAsync(object taskId)
{
AsyncOperation asyncOp = userStateToLifetime[taskId] as AsyncOperation;
if (asyncOp != null)
{
lock (userStateToLifetime.SyncRoot)
{
userStateToLifetime.Remove(taskId);
}
}
}
' This method cancels a pending asynchronous operation.
Public Sub CancelAsync(ByVal taskId As Object)
Dim obj As Object = userStateToLifetime(taskId)
If (obj IsNot Nothing) Then
SyncLock userStateToLifetime.SyncRoot
userStateToLifetime.Remove(taskId)
End SyncLock
End If
End Sub
Poznámky
Voláním PostOperationCompleted metody ukončete životnost asynchronní operace. Po volání této metody pro konkrétní úkol vyvolá volání odpovídajícího AsyncOperation objektu výjimku.
Parametr d
zabalí delegáta, kterého má třída volat, když životnost úkolu skončí z důvodu dokončení, zrušení nebo selhání úlohy. Objekt AsyncOperation zajistí, že je váš delegát vyvolán ve vlákně nebo kontextu vhodném pro aplikační model. Váš delegát může volitelně vyvolat událost, která klienty upozorní, že životnost asynchronní úlohy skončila.
Parametr arg
se používá k předání informací o stavu delegátu d
dokončení . Jako hodnotu parametru AsyncOperation můžete použít objekt nebo System.ComponentModel.AsyncCompletedEventArgs objekt. Případně, pokud chcete poskytnout další úložiště stavu, můžete použít instanci třídy odvozené z třídy System.ComponentModel.AsyncCompletedEventArgs .
Poznámky pro dědice
Dědíci musí učinit PostOperationCompleted(SendOrPostCallback, Object) vyvolání asynchronní, aby se zprostředkovatelé knihovny tříd nemuseli zabývat potenciálními přetečeními zásobníku, pokud předpokládají asynchrony, ale konkrétní aplikační model je synchronní. Metoda by měla být interpretována jako volání "ukončení životnosti", což znamená, že implementace musí provést to, co je vhodné pro aplikační model. Například ASP.NET sníží počet nevyřízených asynchronních operací. Tím by se také měla operace uvést do stavu, aby se další volání operace nezdařila, protože se teď dokončila.
Další informace o implementaci asynchronních tříd najdete v tématu Implementace asynchronního vzoru založeného na událostech.