Share via


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 為 的參數,做為工作標識碼。 當您呼叫 AsyncOperationManager.CreateOperation時,您將使用此工作識別碼,此方法會將用戶端的工作識別碼與異步操作的特定調用產生關聯。 此工作識別碼可透過 屬性提供給您的實作 UserSuppliedState

警告

用戶端程式代碼必須小心,才能為 屬性提供唯一的值 UserSuppliedState 。 非唯一的工作標識碼可能會導致您的實作報告進度和其他事件不正確。 您的程式代碼應該檢查是否有非唯一的工作識別碼,並在偵測到時引發 ArgumentException

適用於

另請參閱