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 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
- AsyncOperationManager
- Procedimientos recomendados para el subprocesamiento administrado
- Event-based Asynchronous Pattern Overview (Información general sobre el modelo asincrónico basado en eventos)