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)
{
    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

備註

PostOperationCompleted呼叫 方法以結束異步操作的存留期。 針對特定工作呼叫這個方法之後,對其對應 AsyncOperation 物件的呼叫將會引發例外狀況。

參數 d 會包裝您希望類別在工作存留期因工作完成、取消或失敗而結束時呼叫的委派。 對象 AsyncOperation 可確保在適用於應用程式模型的線程或內容上叫用您的委派。 您的委派可以選擇性地引發事件,通知用戶端異步工作的存留期已結束。

參數 arg 是用來將狀態資訊傳遞至完成委派 d。 您可以使用 AsyncOperation 物件或 System.ComponentModel.AsyncCompletedEventArgs 物件做為參數值。 或者,如果您想要提供額外的狀態記憶體,您可以使用衍生自 System.ComponentModel.AsyncCompletedEventArgs 類別的類別實例。

給繼承者的注意事項

繼承者必須讓 PostOperationCompleted(SendOrPostCallback, Object) 叫用異步,如此一來,如果類別庫提供者假設異步,但特定應用程式模型發生同步,就不需要擔心潛在的堆疊溢位。 方法應該解譯為「結束存留期」呼叫,這表示實作需要對應用程式模型執行適當的動作。 例如,ASP.NET 將會遞減其未處理異步操作的計數。 這也應該讓作業進入狀態,讓任何後續的呼叫都會失敗,因為它現在已完成。

如需實作異步類別的詳細資訊,請參閱 實作事件架構異步模式

適用於

另請參閱