AsyncOperation.PostOperationCompleted(SendOrPostCallback, Object) Metoda
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
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
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.