Je me demande comment arrêter Networkstream.Read()
de bloquer le fil. J'ai un thread séparé où NetworkStream.Read()
attend des données du serveur. Supposons que l'utilisateur appuie sur un bouton qui envoie des données au serveur. Mais je ne peux pas appeler NetworkStream.Write()
alors qu'il y a NetworkStream.Read()
dans un autre thread en attente de données. Je peux verrouiller NetworkStream
chaque fois, mais NetworkStream.Read()
bloquera le fil de sorte que je ne peux pas envoyer de données jusqu'à ce que lu au moins 1 octet.C# NetworkStream write() et read()
Répondre
Vous aurez besoin d'utiliser l'opération de lecture non-blocage comme décrit à: http://msdn.microsoft.com/en-us/library/system.net.sockets.networkstream.beginread.aspx
La classe NetworkStream fournit des méthodes pour envoyer et recevoir des données sur les prises de flux en mode blocage. Pour plus d'informations sur le blocage par rapport Sockets bloquantes, voir Using an Asynchronous Client Socket
Vous pouvez émettre deux read
et write
en même temps comme indiqué dans la documentation à MSDN docs
lecture et d'écriture peuvent être effectuées simultanément sur une instance de NetworkStream classe sans avoir besoin de synchronisation. Tant qu'il y a un thread unique pour les opérations d'écriture et un thread unique pour les opérations de lecture, il n'y aura pas d'interférence croisée entre les threads de lecture et d'écriture et aucune synchronisation n'est requise.
Vous pouvez interroger la propriété NetworkStream.DataAvailable à certaines périodes et lire uniquement si elle est vraie. "Si DataAvailable est true, un appel à Read retourne immédiatement." Donc vous ne bloquerez pas le flux.
- 1. Socket Read/Write erreur
- 2. Python File Read + Write
- 3. websocket javascript read write
- 4. Données Exif READ Write
- 5. Canaux nommés - Problème avec write() et read()
- 6. c Programmation du contenu read() et write() dans le fichier
- 7. Comprendre le comportement de read() et write()
- 8. Mimetypes pour ImageIO read() et write()
- 9. Write-Once, Read-Many Lock
- 10. UNIX lseek/read/write behavior
- 11. vb- networkstream write only renvoie le premier résultat (need all)
- 12. Puis-je ouvrir avec write read partagé?
- 13. mongodb read vs write timeout de connexion
- 14. Implémentation des règles de sécurité "read" et "write" dans Firebase
- 15. C# Lecture et écriture asynchrones avec NetworkStream
- 16. Différence entre read() et fgets() dans C
- 17. C# AnyCPU et Read/WriteProcessMemory
- 18. .read .write .réplace des éléments de chaîne dans jQuery
- 19. Plus élégant/efficace de faire cela? (XML/Linq/Read & Write)
- 20. Oracle: créer une table WORM (write-once, read-many)?
- 21. read write question ios en application de démarrage
- 22. Est-il possible de promouvoir un FileStream de Read-Only à Read-Write?
- 23. C++ ifstream :: read() et C arrays
- 24. NetworkStream BeginRead/EndRead
- 25. Le posix C write() et thread-sécurité
- 26. Problème avec seekp(), seekg(), read() et write() sur le même fichier
- 27. read() avec setsockopt() en C
- 28. Problème de blocage Read()
- 29. C# read UTF8 UInt64
- 30. CodeIgniter configure une adresse IP différente pour les données MySQL READ et WRITE