AsyncOperation.UserSuppliedState Propiedad
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Obtiene o establece un objeto utilizado 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 pasado a la invocación del 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 forma parte de un ejemplo más grande proporcionado para la System.ComponentModel.AsyncOperationManager clase .
// 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
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 un ArgumentException si se detecta uno.