AsyncOperation.UserSuppliedState Propriedade

Definição

Obtém ou define um objeto usado para identificar de forma única uma operação assíncrona.

public:
 property System::Object ^ UserSuppliedState { System::Object ^ get(); };
public object UserSuppliedState { get; }
member this.UserSuppliedState : obj
Public ReadOnly Property UserSuppliedState As Object

Valor de Propriedade

O objeto de estado passava para a invocação do método assíncrono.

Exemplos

O exemplo de código seguinte demonstra a utilização UserSuppliedState para acompanhar a vida útil 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)
{
    if (userStateToLifetime[taskId] is AsyncOperation)
    {
        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

Observações

Se a sua classe suportar múltiplos métodos assíncronos ou múltiplas invocações de um único método assíncrono, os clientes precisarão de uma forma de determinar qual tarefa assíncrona está a gerar eventos. O teu MethodNameAsync método deve ter um parâmetro do tipo Object que funcione como ID de tarefa. Usará este ID de tarefa ao chamar o AsyncOperationManager.CreateOperationmétodo , e este irá associar o ID da tarefa do cliente a uma invocação particular da sua operação assíncrona. Este ID de tarefa está disponível para a sua implementação através da UserSuppliedState propriedade.

Atenção

O código do cliente deve ter cuidado para fornecer um valor único para a UserSuppliedState propriedade. IDs de tarefa não únicos podem fazer com que a sua implementação reporte incorretamente o progresso e outros eventos. O seu código deve verificar se há um ID de tarefa não único e levantar um ArgumentException caso seja detetado.

Aplica-se a

Ver também