From Friday, April 19th (11:00 PM CDT) through Saturday, April 20th (2:00 PM CDT), 2024, ni.com will undergo system upgrades that may result in temporary service interruption.

We appreciate your patience as we improve our online experience.



Demora Inesperada de la Ejecución Usando la Plataforma de Ejecución de TestStand 2.x y la Interfase de Operador creada en .NET



Software Primario:
Versión de Software Primario: 2.0
Versión de Software Primario Corregido: N/A
Software Secundario: N/A

Problema: Estoy tratando de usar TestStand 2.x para crear mi interfase de operador en .NET. Mi aplicación siempre se traba en funciones que manejan mensajes de la interfase de usuario (UIMessage Handler). ¿Por qué esta sucediendo esto y como puedo prevenirlo?

Solución:
Algunos de los mensajes de la interfase de usuario (UIMessage) son de carácter sincrónico. Esto significa que la ejecución no puede continuar hasta que hayan sido procesados. Debido a esta situación, .NET no suelta la referencia a un UIMessage que es sincrónico y la aplicación no puede continuar hasta que .NET pueda desechar esta referencia. Este comportamiento hace parecer que la ejecución del programa se traba y no avanza.

La solución a este comportamiento es invocar explícitamente el método System.Runtime.Interopservices.Marshal.ReleaseComObject para soltar la referencia al objeto de tipo UIMessage. Esta llamada debe ser realizada desde la función que procesa el mensaje de la interfase de usuario, el código será algo similar al siguiente ejemplo:

private void axEngine1_UIMessageEvent(object sender, AxTS._TEEngineEvents_UIMessageEventEvent e)
{
System.Runtime.InteropServices.Marshal.ReleaseComObject(e.msg);
}



Ligas Relacionadas:

Archivos Adjuntos:





Día del Reporte: 05/14/2004
Última Actualización: 05/17/2004
Identificación del Documento: 336BNJO6