AsyncOperation.PostOperationCompleted(SendOrPostCallback, Object) Metod
Definition
Viktigt
En del information gäller för förhandsversionen av en produkt och kan komma att ändras avsevärt innan produkten blir allmänt tillgänglig. Microsoft lämnar inga garantier, uttryckliga eller underförstådda, avseende informationen som visas här.
Avslutar livslängden för en asynkron åtgärd.
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)
Parametrar
Ett SendOrPostCallback objekt som omsluter ombudet som ska anropas när åtgärden avslutas.
- arg
- Object
Ett argument för ombudet som finns i parametern d .
Undantag
OperationCompleted() har anropats tidigare för den här uppgiften.
d är null.
Exempel
Följande kodexempel visar hur du använder PostOperationCompleted metoden för att avsluta livslängden för en asynkron åtgärd. Det här kodexemplet är en del av ett större exempel för System.ComponentModel.AsyncOperationManager klassen.
// 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
Kommentarer
PostOperationCompleted Anropa metoden för att avsluta livslängden för en asynkron åtgärd. När den här metoden anropas för en viss aktivitet genereras ett undantag vid anrop till motsvarande AsyncOperation objekt.
Parametern d omsluter det ombud som du vill att klassen ska anropa när aktivitetens livslängd upphör på grund av slutförande, annullering eller fel i aktiviteten. Objektet AsyncOperation ser till att ombudet anropas i tråden eller kontexten som är lämplig för programmodellen. Ombudet kan också skapa en händelse som meddelar klienter att den asynkrona aktivitetens livslängd har upphört.
Parametern arg används för att skicka tillståndsinformation till slutförandedelegaten d. Du kan använda ett AsyncOperation objekt eller ett System.ComponentModel.AsyncCompletedEventArgs objekt som parametervärde. Om du vill tillhandahålla ytterligare tillståndslagring kan du också använda en instans av en klass som du härleder från System.ComponentModel.AsyncCompletedEventArgs klassen.
Anteckningar till arvingar
Arvtagarna måste göra anropet PostOperationCompleted(SendOrPostCallback, Object) asynkront, så att klassbiblioteksprovidrar inte behöver bry sig om potentiella stackspill om de antar asynkront men en viss programmodell råkar vara synkron. Metoden ska tolkas som ett "slut på livslängden", vilket innebär att implementeringen måste göra det som är lämpligt för programmodellen. Till exempel minskar ASP.NET antalet utestående asynkrona åtgärder. Detta bör också försätta åtgärden i ett tillstånd som gör att eventuella efterföljande anrop till den misslyckas, eftersom den nu har slutförts.
Mer information om hur du implementerar asynkrona klasser finns i Implementera det händelsebaserade asynkrona mönstret.