Udostępnij za pośrednictwem


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.

Przykłady

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

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

Uwagi

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

Parametr d opakowuje delegata, który ma wywołać klasę, gdy okres istnienia zadania kończy się z powodu ukończenia, anulowania lub niepowodzenia zadania. Obiekt AsyncOperation zapewni wywołanie delegata w wątku lub kontekście odpowiednim dla modelu aplikacji. Delegat 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żesz użyć AsyncOperation obiektu lub System.ComponentModel.AsyncCompletedEventArgs obiektu jako wartości parametru. Alternatywnie, jeśli chcesz udostępnić dodatkowy magazyn stanu, możesz użyć wystąpienia klasy pochodzącej System.ComponentModel.AsyncCompletedEventArgs z klasy.

Uwagi dotyczące dziedziczenia

Dziedzicze muszą asynchronicznie PostOperationCompleted(SendOrPostCallback, Object) wywołać, aby dostawcy bibliotek klas nie musieli martwić się potencjalnymi przepełnieniami stosu, jeśli zakładają asynchronię, ale określony model aplikacji ma być 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ż spowodować przejście operacji do stanu, 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ż