border

Miembros:
Mensajes:
Temas:
Online:

Ultimo Miembro:

 
 


Retroceder   VB-MUNDO - Programacion Visual > Programacion - Lenguajes > Visual Basic.NET 2003 & 2005
Registrarse FAQ Miembros Calendario Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
LinkBack Herramientas Desplegado
  #1 (permalink)  
Antiguo 28-01-2006, 23:14:09
Un Nuevo Amigo
 
Registrado: ene 2006
Posts: 1
mduarte Valoración +2
Predeterminado Multihilos y transformar metodo asincronico en sincronico

Tengo una aplicacion que se comunica con varios dispositivos seriales (utilizando RS485) de forma simultánea.
Necesito preguntarle continuamente el "status" a cada uno de esos dispositivos.
Como puedo llegar a tener hasta 32 dispositivos con los cuales debo hablar, creo un hilo para cada dispositivo donde encapsulo la comunicación de cada uno.

El problema es que el "driver" de los dispositivos, tiene diseñado de forma asincronica el metodo que me retorna el status y yo necesariamente debo tener la

respuesta sincronica.

Para solucionar esto, diseñe un clase intermediaria, que me encapsula la llamada al metodo y la respuesta asincronica.

Class AsynchToSync

Private mTimeout as integer = 5000 ' timeout por defecto
Private mStatus as integer = -1 ' status que me respondio

Private mHasResponse as ManualResetEvent

Public Function getStatus as Integer
mHasResponse = new ManualResetEvent(False)
' llamo al metodo asincronico y espero la devolucion de la llamada.
COMPONENTE.GetStatus(AddressOf GetResponse)
mHasResponse.WaitOne(mTimeout, True)
return mStatus
End Function

Private Sub getResponse(Status as Integer)
Try
mStatus = Status
Finally
' indico que recibi la respuesta
mHasResponse.Set
End try
End Sub
End Class


Y lo llamo desde los diferentes hilos :

Dim c as new AsyncToSync
resultado = getStatus


El problema actual es que cada cierta cantidad de horas de estar corriendo la aplicación, tengo un deadlock congelandome por completo la comunicación con

los dispositivos.
He eliminado todo codigo de Log que tenía (podia ser una de las causas), simplificando el codigo a lo que escribi anteriormente.

Alguien se da cuenta a simple vista del motivo del deadlock ??

Muchas gracias por cualquier comentario (para solucionarlo o de otra arquitectura a utilizar)


Marcelo
Responder Con Cita
Respuesta


Herramientas
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Trackbacks are habilitado
Pingbacks are habilitado
Refbacks are habilitado


Temas Similares
Tema Autor Foro Respuestas Último Mensaje
Transformar números a palabras... jrios03 Visual Basic 6.00 7 21-05-2008 23:47:49
transformar proyecto de vb 2003 a vb 2005 black_flowers Visual Basic.NET 2003 & 2005 2 27-11-2007 13:02:43
busco tutorial para transformar archivo doc en vb fepino Visual Basic 6.00 5 13-07-2007 21:03:13
Metodo Estatico Informatico Visual Basic.NET 2003 & 2005 2 24-09-2006 21:38:20
Transformar texto a numero saroaes21 Visual Basic 6.00 2 16-05-2005 15:49:17


La franja horaria es GMT. Ahora son las 23:37:41.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO 3.1.0
A vBSkinworks Design

Alojado en el servicio Premium de Masquewebs | Diseño mejorado por MasqueWebs

right