Partilhar via


AsyncOperation.UserSuppliedState Propriedade

Definição

Obtém ou define um objeto usado para identificar uma operação assíncrona de maneira ú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 da propriedade

O objeto state passado para a invocação de método assíncrono.

Exemplos

O exemplo de código a seguir demonstra o uso UserSuppliedState para acompanhar o tempo de vida das operações assíncronas. Este exemplo de código faz parte de um exemplo maior fornecido para a System.ComponentModel.AsyncOperationManager classe .

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

Comentários

Se sua classe der suporte a vários métodos assíncronos ou várias invocações de um único método assíncrono, os clientes precisarão de uma maneira de determinar qual tarefa assíncrona está gerando eventos. Seu MethodNameAsync método deve usar um parâmetro do tipo Object que atuará como uma ID de tarefa. Você usará essa ID de tarefa ao chamar o AsyncOperationManager.CreateOperationmétodo , e isso associará a ID de tarefa do cliente a uma invocação específica de sua operação assíncrona. Essa ID de tarefa é disponibilizada para sua implementação por meio da UserSuppliedState propriedade .

Cuidado

O código do cliente deve ter cuidado para fornecer um valor exclusivo para a UserSuppliedState propriedade . IDs de tarefa não exclusivas podem fazer com que sua implementação relate o progresso e outros eventos incorretamente. Seu código deve marcar para uma ID de tarefa não exclusiva e gerar um ArgumentException se for detectado.

Aplica-se a

Confira também