Me pregunto cómo detener Networkstream.Read()
del hilo de bloqueo. Tengo un hilo separado donde NetworkStream.Read()
está esperando datos del servidor. Supongamos que el usuario presiona un botón que envía algunos datos al servidor. Pero no puedo llamar al NetworkStream.Write()
mientras hay NetworkStream.Read()
en otro hilo esperando datos. Puedo bloquear NetworkStream
cada vez, pero NetworkStream.Read()
bloqueará el hilo, por lo que no puedo enviar datos hasta leer al menos 1 byte.C# NetworkStream write() y read()
Respuesta
Usted tendrá que utilizar no bloqueante operación de lectura tal como se describe en: http://msdn.microsoft.com/en-us/library/system.net.sockets.networkstream.beginread.aspx
La clase NetworkStream proporciona métodos para enviar y recibir datos a través de sockets de flujo en modo de bloqueo. Para obtener más información sobre el bloqueo contra sockets no bloqueantes, ver Using an Asynchronous Client Socket
puede emitir tanto read
y write
al mismo tiempo como se indica en la documentación en MSDN docs
de lectura y escritura se puede realizar de forma simultánea en una instancia de la NetworkStream clase sin la necesidad de sincronización. Siempre que haya un hilo único para las operaciones de escritura y un hilo único para las operaciones de lectura, no habrá interferencia cruzada entre los hilos de lectura y escritura y no se requiere sincronización.
Puede consultar la propiedad NetworkStream.DataAvailable en algunos períodos de tiempo y leer solo si es verdadera. "Si DataAvailable es verdadero, una llamada a Read vuelve inmediatamente". Entonces no bloquearás la transmisión.
- 1. C# make file read/write from readonly
- 2. Write-Once + Read-Numerous Map in Java?
- 3. Diferencia entre read() y fgets() en C
- 4. ¿Cuál es la diferencia entre read() y recv(), y entre send() y write()?
- 5. TcpClient.GetStream() Read() vs. TcpClient.Client.Receive()
- 6. ¿Cuánta memoria intermedia tienen NetworkStream y TcpClient?
- 7. Atomically read/write int value sin operación adicional en el valor int en sí
- 8. ¿Los métodos python's write write() y urlopen() son asíncronos?
- 9. ¿Cómo puedo hacer una propiedad "Write Once Read Many" en VB.NET?
- 10. C# Read stdout of child process asincronically
- 11. Cerrar un NetworkStream después de llamar a BeginRead() en C#
- 12. write() para la salida stdout y printf no intercalada?
- 13. Objective C read-only int? ¿Qué?
- 14. ¿Es necesario cerrar NetworkStream y TcpClient, o simplemente TcpClient?
- 15. ¿Cómo moq un NetworkStream en una prueba de unidad?
- 16. ¿Cómo implementar Copy-on-Write?
- 17. PHP read Javascript array
- 18. Groovy write to file (newline)
- 19. .NET Binary File Read Performance
- 20. Serial: write() throttling?
- 21. python read next()
- 22. ¿Cuáles son las principales diferencias entre fwrite y write?
- 23. Uso de read() directamente en C++ std: vector
- 24. C++ read() - ing desde un socket a un ofstream
- 25. does red5 read tomcat-users.xml
- 26. USB HID se bloquea en Read() en C#
- 27. SQL: Secuencialmente haciendo UPDATE .WRITE en la columna VarBinary
- 28. CouchDb read authentication using lists
- 29. JavaScript: JSLint lanza "Read Only
- 30. WCF Read DataMember Name attribute