AsyncOperation.UserSuppliedState Propriedade
Definição
Importante
Algumas informações dizem respeito a um produto pré-lançado que pode ser substancialmente modificado antes de ser lançado. A Microsoft não faz garantias, de forma expressa ou implícita, em relação à informação aqui apresentada.
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.