AYUDA EN LÍNEA
 WINDEVWEBDEV Y WINDEV MOBILE

Este contenido se ha traducido automáticamente.  Haga clic aquí  para ver la versión en inglés.
Ayuda / WLanguage / Funciones WLanguage / Comunicación / Funciones .Net
  • Vocabulario
  • ¿Cómo usar un delegado de.Net con WINDEV?
  • Cómo Process los eventos .NET
  • Consejo
  • Varios
WINDEV
WindowsLinuxUniversal Windows 10 AppJavaReportes y ConsultasCódigo de Usuario (UMC)
WEBDEV
WindowsLinuxPHPWEBDEV - Código Navegador
WINDEV Mobile
AndroidWidget Android iPhone/iPadIOS WidgetApple WatchMac CatalystUniversal Windows 10 App
Otros
Procedimientos almacenados
DotNetDelegate( Función)
Inicializa un delegado.NET. Este delegado permitirá a .NET devolver la llamada a una Procedure WLanguage o método en caso de eventos o "callbacks".
clOwn is OwnEvent
clOwn:add_MyEvent(DotNetDelegate("MyHandler", "EventHandler<MyEventArgument>"))
clOwn:Trigger("Hello")
PROCÉDURE MyHandler(src, args)
Trace(args:Message)
Sintaxis
<Result> = DotNetDelegate(<WLanguage procedure> , <Type of Delegate>)
<Result>: Objeto .NET
Net del tipo de participante.
<WLanguage procedure>: Nombre de Procedure
Nombre del WLanguage Procedure o método para llamar. Este procedimiento tiene el siguiente formato:

PROCEDURE <Procedure Name>(Src, Args)
donde:
  • Src corresponde al objeto .NET que envía el Event
  • Args corresponde al objeto .NET utilizado como parámetro del Event .
<Type of Delegate>: Cadena de caracteres
Nombre de la clase del delegado a crear. Este parámetro no debe corresponder a una Variable.
Observaciones

Vocabulario

  • Delegar: Se utiliza para gestionar una devolución de llamada. Es un tipo de "función. Define el prototipo de la función. El delegado se inicializa con una función.NET correspondiente al prototipo. El delegado es el equivalente.NET del puntero de función en C. Varios métodos pueden ser associated a un mismo delegado: todos ellos se llamarán.
    Atención: en la documentación.NET, este término también puede designar los "métodos delegados", es decir, los métodos associated con un delegado.
  • Manipulador: Tipo particular de delegado diseñado específicamente para el procesamiento de eventos.
  • Evento: Un Event puede ser associated con uno o más manejadores. Cuando se activa el Event, se llama a todos los manipuladores asociados con este Event.

¿Cómo usar un delegado de.Net con WINDEV?

Para utilizar un delegado de .Net, usted debe:
  1. Encuentre el delegado en la lista de clases.NET
    El delegado es una clase.NET en sí misma. El nombre del delegado debe ser conocido (ver la documentación de su ensamblaje.NET).
  2. Definir los parámetros del participante
    El delegado define un método de invocación. El WLanguage Procedure associated con el delegado debe tener los mismos parámetros.
  3. Asociar el WLanguage Procedure con el delegado
    El delegado se utiliza en una clase.NET. Esta clase posee métodos utilizados para añadir o eliminar un "método delegado" al/del delegado.
    Consulte la documentación sobre su ensamblaje.NET para conocer los nombres de estos métodos.
Ejemplo:
  • Nombre de la clase que utiliza el delegado : CUseDelegate
  • Nombre de la clase del delegado: CUseDelegate.CpfMyDelegate
  • Prototipo del método Invoke de la clase CUseDelegate.CpfMyDelegate : Invocar (entero)
  • Prototipo del método WLanguage correspondiente: Procedure MyCallbackWL(local i is int)
    // Instantiate a class that owns a delegate 
    clUse is CUseDelegate

    // Add a "delegate method" (WL callback) to the delegate
    clUse:AddDelegate(DotNetDelegate("MyWLCallback", "CUseDelegate.CpfMyDelegate"))

    // Provoke the use of the delegate by the .NET class
    clUse:UseDelegate()

Cómo Process los eventos .NET

Para Process los eventos de .Net, debes:
1. Encontrar el evento.
El Event es miembro de una clase de .NET. Este miembro tiene un nombre y un tipo. El tipo define el tipo de gestor que se puede asociar a la Event. El nombre se usa para encontrar dos métodos:
  • "add_"
  • "remove_"
Estos dos métodos se utilizan para asociar y disociar uno o varios manipuladores con/de un Event. El tipo de parámetro para estos dos métodos es el nombre del tipo de manejador.
Ejemplo: La clase OwnEvent contiene un evento MyEvent de tipo EventHandler<MyEventArgument>.
2. Obtener un controlador.
Se puede recuperar un controlador con DotNetDelegate:
  • El primer parámetro es el nombre del WLanguage Procedure
  • El segundo parámetro es el nombre de la clase del tipo de handler. Este nombre puede recuperarse mediante el nombre del tipo de los parámetros de los métodos "add_xxx" y "remove_xxx".
Ejemplo: El WLanguage Procedure tiene el siguiente formato:
PROCÉDURE MyHandler(src, args)
Trace(args:Message)
src es un objeto.NET de tipo OwnEvent, args es un objeto.NET de tipo MyEventArgument
3. Asociar el controlador al evento
Para asociar el manipulador a la Event, basta con llamar al método "add_ en el objeto propietario de la Event".
Ejemplo:
clOwn:add_MyEvent(DotNetDelegate("MyHandler", "EventHandler<MyEventArgument>"))
4. Desencadenar el evento
En nuestro ejemplo, la llamada a clOwn:Trigger desencadena el Event.

Consejo

En el WLanguage Procedure, puedes:
  • utilizar los métodos asociados a los parámetros de la Procedure. Sin embargo, la finalización no está disponible.
  • definir un objeto dinámico y asignarle el parámetro deseado. La terminación está disponible para el objeto.
Estos dos métodos se utilizan en el ejemplo detallado.

Varios

  • Esta función no se puede utilizar en la compilación dinámica.
  • El lenguaje WLanguage Procedure se ejecuta en un thread secundario . En cada llamada, el modo HFSQL utilizado es una copy ligera del contexto HFSQL. El contexto se destruye una vez ejecutada la Procedure.
Componente: wd290vm.dll
Ver también
Versión mínima requerida
  • Versión 12
Esta página también está disponible para…
Comentarios
Haga clic en [Agregar] para publicar un comentario

Última modificación: 09/09/2023

Señalar un error o enviar una sugerencia | Ayuda local