AsyncOperation.PostOperationCompleted(SendOrPostCallback, Object) Methode
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Beendet die Lebensdauer eines asynchronen Vorgangs.
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)
Parameter
Ein SendOrPostCallback-Objekt, das den am Ende des Vorgangs aufzurufenden Delegaten umschließt.
- arg
- Object
Ein Argument für den Delegaten, der im d
-Parameter enthalten ist.
Ausnahmen
OperationCompleted() wurde vorher für diese Aufgabe aufgerufen.
d
ist null
.
Beispiele
Das folgende Codebeispiel veranschaulicht die Verwendung der PostOperationCompleted -Methode zum Beenden der Lebensdauer eines asynchronen Vorgangs. Dieses Codebeispiel ist Teil eines größeren Beispiels, das für die System.ComponentModel.AsyncOperationManager-Klasse bereitgestellt wird.
// 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
Hinweise
Rufen Sie die PostOperationCompleted -Methode auf, um die Lebensdauer eines asynchronen Vorgangs zu beenden. Nachdem diese Methode für eine bestimmte Aufgabe aufgerufen wurde, löst ein Aufruf des entsprechenden AsyncOperation Objekts eine Ausnahme aus.
Der d
-Parameter umschließt den Delegat, den Ihre Klasse aufrufen soll, wenn die Lebensdauer des Vorgangs aufgrund von Abschluss, Abbruch oder Fehler der Aufgabe endet. Das AsyncOperation -Objekt stellt sicher, dass Ihr Delegat für den thread oder kontext aufgerufen wird, der für das Anwendungsmodell geeignet ist. Ihr Delegat kann optional ein Ereignis auslösen, das Clients benachrichtigt, dass die Lebensdauer des asynchronen Tasks beendet wurde.
Der arg
-Parameter wird verwendet, um Zustandsinformationen an den Vervollständigungsdelegat d
zu übergeben. Sie können ein AsyncOperation -Objekt oder ein System.ComponentModel.AsyncCompletedEventArgs -Objekt als Parameterwert verwenden. Wenn Sie zusätzlichen Zustandsspeicher bereitstellen möchten, können Sie alternativ eine instance einer Klasse verwenden, die Sie von der System.ComponentModel.AsyncCompletedEventArgs -Klasse ableiten.
Hinweise für Vererber
Erben müssen den PostOperationCompleted(SendOrPostCallback, Object) Aufruf asynchron machen, sodass sich Klassenbibliotheksanbieter nicht mit potenziellen Stapelüberläufen befassen müssen, wenn sie von asynchroner Asynchronität ausgehen, ein bestimmtes Anwendungsmodell jedoch synchron ist. Die -Methode sollte als "Ende der Lebensdauer" interpretiert werden, was bedeutet, dass die Implementierung das tun muss, was für das Anwendungsmodell geeignet ist. Für instance verringert ASP.NET die Anzahl der ausstehenden asynchronen Vorgänge. Dadurch sollte auch der Vorgang in einen Zustand versetzt werden, in dem alle nachfolgenden Aufrufe fehlschlagen, da er nun abgeschlossen ist.
Weitere Informationen zum Implementieren asynchroner Klassen finden Sie unter Implementieren des ereignisbasierten asynchronen Musters.