Ver Mensaje Individual
  #23 (permalink)  
Antiguo 14/11/2005, 21:16
mariano_donati
 
Fecha de Ingreso: marzo-2005
Mensajes: 1.418
Antigüedad: 19 años, 1 mes
Puntos: 9
Si, te está pasando lo mismo que me paso a mi, aunque tu lógica sea distinta a la que utilizo yo. El problema es que el evento se origina en un subproceso que no es el principal, y el proceso principal es el único que puede abrir un nuevo formulario, por eso se queda colgado. Yo lo solucioné con un delegado. Te paso el código:

El primer procedimiento ClientApp_MessageReceived es el que maneja el evento que se produce en el subproceso cuando se recibe un nuevo mensaje. Como desde este evento no podés abrir el formulario, entonces lo único que haces es crear una instancia del delegado que defino posteriormente y hacer que el formulario invoque a este delegado para que ejecute el método que le pasas como parametro de AddressOf.
El método ShowForm es en realidad el que se encarga de hacer toda la tarea. Este es el método hacia el que apunta el delegado y el cual te muestra el formulario.


PrivateSub ClientApp_MessageReceived(ByVal Data AsString, ByVal IpFrom AsString, ByVal ClientNickname AsString) Handles ClientApp.MessageReceived

Dim MyDelegate AsNew ShowFormDelegate(AddressOf ShowForm)

Me.Invoke(MyDelegate, NewObject() {Data, IpFrom, ClientNickname, ClientApp})

EndSub

DelegateSub ShowFormDelegate(ByVal Data AsString, ByVal IpFrom AsString, ByVal ClientNickname AsString, ByVal C As Client)

PrivateSub ShowForm(ByVal Data AsString, ByVal IpFrom AsString, ByVal ClientNickname AsString, ByVal C As Client)

IfNot CurrentChattingForms.ContainsKey(IpFrom) Then

Dim frmChat AsNew frmChat()

AddHandler frmChat.ClosingForm, AddressOf frmChat_ClosingForm

frmChat.Text = ClientNickname

frmChat.Show()

frmChat.ClientApp = C

frmChat.IpFrom = IpFrom

frmChat.Message = Data

CurrentChattingForms.Add(IpFrom, frmChat)

Else

Dim CurrentForm As frmChat = CurrentChattingForms(IpFrom)

CurrentForm.Message = Data

EndIf

EndSub


Espero que te sirva de algo para ir pagandote parte de la cuota que te debo por haberme ayudado con lo mio.

Saludos!.
__________________
Add, never Remove