Freigeben über


AsyncOperation.PostOperationCompleted(SendOrPostCallback, Object) Methode

Definition

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

d
SendOrPostCallback

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 dzu ü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.

Gilt für:

Weitere Informationen