
15/10/2008, 05:19
|
| | Fecha de Ingreso: octubre-2008
Mensajes: 91
Antigüedad: 16 años, 6 meses Puntos: 0 | |
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 |