AsyncOperation.PostOperationCompleted(SendOrPostCallback, Object) Metoda

Definicja

Kończy okres istnienia operacji asynchronicznej.

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

d
SendOrPostCallback

SendOrPostCallback Obiekt, który opakowuje delegata do wywołania po zakończeniu operacji.

arg
Object

Argument delegata zawartego w parametrze d .

Wyjątki

OperationCompleted() został wcześniej wywołany dla tego zadania.

Parametr d ma wartość null.

Przykłady

Poniższy przykład kodu przedstawia użycie PostOperationCompleted metody w celu zakończenia okresu istnienia operacji asynchronicznej. Ten przykład kodu jest częścią większego przykładu udostępnionego dla klasy System.ComponentModel.AsyncOperationManager.

// 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

Uwagi

Wywołaj metodę PostOperationCompleted , aby zakończyć okres istnienia operacji asynchronicznej. Po wywołaniu tej metody dla określonego zadania wywołania odpowiedniego AsyncOperation obiektu spowodują wystąpienie wyjątku.

Parametr d opakowuje delegata, który ma być wywoływany, gdy okres istnienia zadania kończy się z powodu ukończenia, anulowania lub niepowodzenia zadania. Obiekt AsyncOperation zapewni, że delegat jest wywoływany w wątku lub kontekście odpowiednim dla modelu aplikacji. Pełnomocnik może opcjonalnie zgłosić zdarzenie, które powiadamia klientów o zakończeniu okresu istnienia zadania asynchronicznego.

Parametr arg służy do przekazywania informacji o stanie do delegata dukończenia . Można użyć AsyncOperation obiektu lub System.ComponentModel.AsyncCompletedEventArgs obiektu jako wartości parametru. Alternatywnie, jeśli chcesz udostępnić dodatkowy magazyn stanów, możesz użyć wystąpienia klasy pochodzącej System.ComponentModel.AsyncCompletedEventArgs z klasy .

Notatki dotyczące dziedziczenia

Dziedziczenie musi asynchroniczne PostOperationCompleted(SendOrPostCallback, Object) wywołania, aby dostawcy bibliotek klas nie musieli się martwić potencjalnymi przepełnieniami stosu, jeśli zakładają asynchronię, ale określony model aplikacji jest synchroniczny. Metoda powinna być interpretowana jako wywołanie "kończące okres istnienia", co oznacza, że implementacja musi zrobić, co jest odpowiednie dla modelu aplikacji. Na przykład ASP.NET zdekrementuje liczbę zaległych operacji asynchronicznych. Powinno to również umieścić operację w stanie, tak aby wszystkie kolejne wywołania do niego zakończyły się niepowodzeniem, ponieważ zostało ono ukończone.

Aby uzyskać więcej informacji na temat implementowania klas asynchronicznych, zobacz Implementowanie asynchronicznego wzorca opartego na zdarzeniach.

Dotyczy

Zobacz też