AsyncOperation.UserSuppliedState 属性

定义

获取或设置用于唯一标识异步操作的对象。

public:
 property System::Object ^ UserSuppliedState { System::Object ^ get(); };
public object UserSuppliedState { get; }
public object? UserSuppliedState { get; }
member this.UserSuppliedState : obj
Public ReadOnly Property UserSuppliedState As Object

属性值

传递给异步方法调用的状态对象。

示例

下面的代码示例演示如何使用 UserSuppliedState 跟踪异步操作的生存期。 此代码示例是为 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

注解

如果类支持多个异步方法或单个异步方法的多个调用,则客户端将需要一种方法来确定引发事件的异步任务。 方法 MethodNameAsync 应采用类型的 Object 参数,该参数将充当任务 ID。 调用 时,将使用此任务 ID AsyncOperationManager.CreateOperation,这会将客户端的任务 ID 与异步操作的特定调用相关联。 此任务 ID 通过 UserSuppliedState 属性提供给实现。

注意

客户端代码必须小心为 属性提供唯一值 UserSuppliedState 。 非唯一任务 ID 可能会导致实现错误地报告进度和其他事件。 代码应检查非唯一任务 ID,并在检测到任务 ID 时引发 ArgumentException

适用于

另请参阅