次の方法で共有


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

注釈

クラスで複数の非同期メソッドまたは 1 つの非同期メソッドの複数の呼び出しがサポートされている場合、クライアントはイベントを発生させる非同期タスクを判断する方法が必要です。 メソッドは MethodNameAsync 、タスク ID として機能する型 Object のパラメーターを受け取る必要があります。 このタスク ID は、 メソッドを呼び出 AsyncOperationManager.CreateOperationすときに使用します。これにより、クライアントのタスク ID が非同期操作の特定の呼び出しに関連付けられます。 このタスク ID は、 プロパティを使用して実装で UserSuppliedState 使用できるようになります。

注意事項

クライアント コードでは、 プロパティに一意の値を指定するように注意する UserSuppliedState 必要があります。 一意でないタスク ID を使用すると、実装で進行状況やその他のイベントが誤って報告される可能性があります。 コードでは、一意でないタスク ID をチェックし、検出された場合は をArgumentException発生させる必要があります。

適用対象

こちらもご覧ください