AsyncOperation.UserSuppliedState Свойство

Определение

Возвращает или задает объект, используемый для уникальной идентификации асинхронной операции.Gets or sets an object used to uniquely identify an asynchronous operation.

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

Значение свойства

Object

Объект состояния, переданный в вызов асинхронного метода.The state object passed to the asynchronous method invocation.

Примеры

В следующем примере кода показано использование UserSuppliedState для мониторинга времени существования асинхронных операций.The following code example demonstrates using UserSuppliedState to track the lifetime of asynchronous operations. Этот пример кода является частью большого примера, приведенного для System.ComponentModel.AsyncOperationManager класса.This code example is part of a larger example provided for the System.ComponentModel.AsyncOperationManager class.

// 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

Комментарии

Если ваш класс поддерживает несколько асинхронных методов или несколько вызовов одного асинхронного метода, клиентам потребуется способ определить, какая асинхронная задача вызывает события.If your class supports multiple asynchronous methods or multiple invocations of a single asynchronous method, clients will need a way to determine which asynchronous task is raising events. MethodNameAsyncМетод должен принимать параметр типа Object , который будет действовать как идентификатор задачи.Your MethodNameAsync method should take a parameter of type Object that will act as a task ID. Этот идентификатор задачи будет использоваться при вызове AsyncOperationManager.CreateOperation метода, и это приведет к связыванию идентификатора задачи клиента с определенным вызовом асинхронной операции.You will use this task ID when you call the AsyncOperationManager.CreateOperation, method and this will associate the client's task ID with a particular invocation of your asynchronous operation. Этот идентификатор задачи предоставляется вашей реализации через UserSuppliedState свойство.This task ID is made available to your implementation through the UserSuppliedState property.

Внимание!

Код клиента должен быть аккуратным, чтобы предоставить уникальное значение для UserSuppliedState Свойства.Client code must be careful to provide a unique value for the UserSuppliedState property. Идентификаторы неуникальных задач могут привести к тому, что ваша реализация сообщит о ходе выполнения и других событиях неверно.Non-unique task IDs may cause your implementation to report progress and other events incorrectly. Код должен проверять наличие неуникального идентификатора задачи и вызывать исключение, ArgumentException если он обнаружен.Your code should check for a non-unique task ID and raise an ArgumentException if one is detected.

Применяется к

См. также раздел