AsyncOperation.PostOperationCompleted(SendOrPostCallback, Object) 方法

定義

終止非同步操作的生命週期。

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)

參數

d
SendOrPostCallback

一個 SendOrPostCallback 包裹執行任務結束時要呼叫的代理的物件。

arg
Object

代表代表的論證包含在參數中 d

例外狀況

OperationCompleted() 此任務之前已被召喚。

dnull

範例

以下程式碼範例示範如何使用此 PostOperationCompleted 方法終止非同步操作的生命週期。 此程式碼範例是本類別更大範例 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

備註

呼叫 PostOperationCompleted 該方法以終止非同步操作的生命週期。 在特定任務呼叫此方法後,呼叫對應 AsyncOperation 物件會產生例外。

參數 d 會包裹你希望類別在任務生命週期結束時,因任務完成、取消或失敗而呼叫的代理。 物件 AsyncOperation 會確保你的代理在適合應用模型的執行緒或上下文中被呼叫。 您的代理人可以選擇性地發起事件,通知客戶非同步任務的生命週期已結束。

參數 arg 用於將狀態資訊傳遞給完備代理 d。 你可以用 AsyncOperation 物件,或 System.ComponentModel.AsyncCompletedEventArgs 物件作為參數值。 或者,如果你想提供額外的狀態儲存,也可以使用你從該 System.ComponentModel.AsyncCompletedEventArgs 類別衍生出的類別實例。

給繼承者的注意事項

繼承者必須讓 PostOperationCompleted(SendOrPostCallback, Object) 調用成為非同步,這樣類別函式庫提供者若假設非同步但特定應用模型是同步的,就不必擔心堆疊溢位的問題。 此方法應被解讀為「終止生命週期」呼叫,意即實作需依應用模型做出適當操作。 例如,ASP.NET 會減少其未完成的非同步操作數量。 這也應該會讓操作進入一個狀態,使得後續任何呼叫都會失敗,因為操作已經完成。

欲了解更多關於實作非同步類別的資訊,請參閱 「實作基於事件的非同步模式」。

適用於

另請參閱