Ver Mensaje Individual
  #1 (permalink)  
Antiguo 15/10/2008, 05:19
nitsuga1986
 
Fecha de Ingreso: octubre-2008
Mensajes: 91
Antigüedad: 15 años, 7 meses
Puntos: 0
Exclamación Problemas con beginRead

Hola, estoy utilizando el BeginRead para leer de un flujo, ya que con el Read, se me kdaba bloqueada la PDA(pork es sincrono)
El caso es que el BeginRead siempre me devuelve una cadena vacia, aunk ya haya una cadena para leer en el flujo....
Asi es como lo hago:

Public Sub WaitCadenas(ByVal Retardo As Integer, ByVal cadenaRecibida as String)

Dim cadenaAux As String = cadenaRecibida
Dim BufferDeLectura() As Byte = New Byte(4000) {}

Array.Clear(BufferDeLectura, 0, BufferDeLectura.Length)

While (DateTime.Now.Second <= Retardo) And (cadenaRecibida = cadenaAux)
Application.DoEvents()
ProcesaEventos()
WinSockCliente.Stm.BeginRead(BufferDeLectura, 0, BufferDeLectura.Length, New AsyncCallback(AddressOf Me.EndReadSmtp), WinSockCliente.Stm)
cadenaRecibida = Encoding.ASCII.GetString(BufferDeLectura, 0, BufferDeLectura.Length)
ProcesaEventos()
End While

La funcion de AsynCallBack es:

Private Sub EndReadSmtp(ByVal iar As IAsyncResult)
WinSockCliente.Stm = iar.AsyncState
Dim BufferDeLectura() As Byte = New Byte(4000) {}

WinSockCliente.Stm.BeginRead(BufferDeLectura, 0, BufferDeLectura.Length, New AsyncCallback(AddressOf Me.EndReadSmtp), WinSockCliente.Stm)

End Sub


El caso es k siempre para cadenaRecibida, me devuelve una cadena vacia....En cambio, si lo hago con READ en vez de BEGINREAD si me devuelve la cadena del Stream, lo malo es k se keda blokeado hasta k consigue leer algo....

Gracias
Y un saludo