Sdílet prostřednictvím


AsyncOperation.PostOperationCompleted(SendOrPostCallback, Object) Metoda

Definice

Ukončí životnost asynchronní operace.

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

Objekt SendOrPostCallback , který zabalí delegáta, který má být volána po ukončení operace.

arg
Object

Argument delegáta obsaženého v parametru d .

Výjimky

OperationCompleted() byla dříve volána pro tento úkol.

Příklady

Následující příklad kódu ukazuje použití PostOperationCompleted metody k ukončení životnosti asynchronní operace. Tento příklad kódu je součástí většího příkladu System.ComponentModel.AsyncOperationManager pro třídu .

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

Poznámky

Voláním PostOperationCompleted metody ukončete životnost asynchronní operace. Po volání této metody pro konkrétní úkol vyvolá volání odpovídajícího AsyncOperation objektu výjimku.

Parametr d zabalí delegáta, kterého má třída volat, když životnost úkolu skončí z důvodu dokončení, zrušení nebo selhání úlohy. Objekt AsyncOperation zajistí, že je váš delegát vyvolán ve vlákně nebo kontextu vhodném pro aplikační model. Váš delegát může volitelně vyvolat událost, která klienty upozorní, že životnost asynchronní úlohy skončila.

Parametr arg se používá k předání informací o stavu delegátu ddokončení . Jako hodnotu parametru AsyncOperation můžete použít objekt nebo System.ComponentModel.AsyncCompletedEventArgs objekt. Případně, pokud chcete poskytnout další úložiště stavu, můžete použít instanci třídy odvozené z třídy System.ComponentModel.AsyncCompletedEventArgs .

Poznámky pro dědice

Dědíci musí učinit PostOperationCompleted(SendOrPostCallback, Object) vyvolání asynchronní, aby se zprostředkovatelé knihovny tříd nemuseli zabývat potenciálními přetečeními zásobníku, pokud předpokládají asynchrony, ale konkrétní aplikační model je synchronní. Metoda by měla být interpretována jako volání "ukončení životnosti", což znamená, že implementace musí provést to, co je vhodné pro aplikační model. Například ASP.NET sníží počet nevyřízených asynchronních operací. Tím by se také měla operace uvést do stavu, aby se další volání operace nezdařila, protože se teď dokončila.

Další informace o implementaci asynchronních tříd najdete v tématu Implementace asynchronního vzoru založeného na událostech.

Platí pro

Viz také