2011-07-27 21 views
5

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

0

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

7

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.

2

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.

Cuestiones relacionadas