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.
d
to null
.
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 d
ukoń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.