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 Delegat umschließt, der aufgerufen werden soll, wenn der Vorgang beendet wird.
- arg
- Object
Ein Argument für die Stellvertretung, die d im Parameter enthalten ist.
Ausnahmen
OperationCompleted() wurde zuvor für diesen Vorgang aufgerufen.
d ist null.
Beispiele
Im folgenden Codebeispiel wird die Verwendung der PostOperationCompleted Methode zum Beenden der Lebensdauer eines asynchronen Vorgangs veranschaulicht. 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)
{
if (userStateToLifetime[taskId] is AsyncOperation)
{
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 einen bestimmten Vorgang aufgerufen wurde, löst der Aufruf des entsprechenden AsyncOperation Objekts eine Ausnahme aus.
Der d Parameter umschließt die Stellvertretung, die Ihre Klasse aufrufen soll, wenn die Lebensdauer der Aufgabe aufgrund von Abschluss, Abbruch oder Fehler der Aufgabe endet. Das AsyncOperation Objekt stellt sicher, dass Ihre Stellvertretung für den Thread oder den Kontext aufgerufen wird, der für das Anwendungsmodell geeignet ist. Ihre Stellvertretung kann optional ein Ereignis auslösen, das Clients benachrichtigt, dass die Lebensdauer der asynchronen Aufgabe beendet wurde.
Der arg Parameter wird verwendet, um Zustandsinformationen an den Abschlussdelegat dzu übergeben. Sie können ein AsyncOperation Objekt oder ein System.ComponentModel.AsyncCompletedEventArgs Objekt als Parameterwert verwenden. Alternativ können Sie, wenn Sie zusätzlichen Zustandsspeicher bereitstellen möchten, eine Instanz einer Klasse verwenden, die Sie von der System.ComponentModel.AsyncCompletedEventArgs Klasse ableiten.
Hinweise für Vererber
Erber müssen den PostOperationCompleted(SendOrPostCallback, Object) Aufruf asynchron machen, damit Klassenbibliotheksanbieter sich nicht mit potenziellen Stapelüberläufen befassen müssen, wenn sie asynchron annehmen, aber ein bestimmtes Anwendungsmodell synchron ist. Die Methode sollte als Aufruf "die Lebensdauer beenden" interpretiert werden, d. h., die Implementierung muss tun, was für das Anwendungsmodell geeignet ist. Beispielsweise erhöht ASP.NET die Anzahl der ausstehenden asynchronen Vorgänge. Dies sollte auch den Vorgang in einen Zustand versetzen, sodass alle nachfolgenden Aufrufe daran fehlschlagen, da sie nun abgeschlossen ist.
Weitere Informationen zum Implementieren asynchroner Klassen finden Sie unter Implementieren des ereignisbasierten asynchronen Musters.