AsyncOperation.UserSuppliedState 屬性
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
取得或設定用來唯一識別非同步作業的物件。
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 。