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 会减少其未完成异步操作的计数。 这还应将操作置于一种状态,以便对它的任何后续调用都将失败,因为它现已完成。

有关实现异步类的详细信息,请参阅 实现基于事件的异步模式

适用于

另请参阅