Compartir a través de


AsyncOperation.UserSuppliedState Propiedad

Definición

Obtiene o establece un objeto que se usa para identificar de forma única una operación asincrónica.

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

Valor de propiedad

Objeto de estado que se pasó a la invocación al método asincrónico.

Ejemplos

En el ejemplo de código siguiente se muestra cómo usar UserSuppliedState para realizar un seguimiento de la duración de las operaciones asincrónicas. Este ejemplo de código es parte de un ejemplo más grande proporcionado para la clase 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

Comentarios

Si la clase admite varios métodos asincrónicos o varias invocaciones de un único método asincrónico, los clientes necesitarán una manera de determinar qué tarea asincrónica está generando eventos. El MethodNameAsync método debe tomar un parámetro de tipo Object que actuará como identificador de tarea. Usará este identificador de tarea cuando llame al AsyncOperationManager.CreateOperationmétodo , y esto asociará el identificador de tarea del cliente con una invocación determinada de la operación asincrónica. Este identificador de tarea está disponible para la implementación a través de la UserSuppliedState propiedad .

Precaución

El código de cliente debe tener cuidado de proporcionar un valor único para la UserSuppliedState propiedad . Los identificadores de tarea no únicos pueden hacer que la implementación notifique el progreso y otros eventos incorrectamente. El código debe comprobar si hay un identificador de tarea no único y generar si ArgumentException se detecta uno.

Se aplica a

Consulte también