
Έχω ένα σενάριο με το σχετικό, αλλά διαφορετικές ερωτήσεις. Γι 'αυτό μπορεί να φαίνεται σαν ένα διπλές θέση, αλλά δεν είναι


Δουλεύω σε μια κατηγορία που χρησιμοποιεί ένα *TcpClient* δημιουργήθηκε τελικά στο νήμα UI για να διαβάσει και να γράψει τα δεδομένα. Όταν η *TcpClient* δημιουργείται ο σχεδιασμός είναι να συνδεθείτε σε ένα διακομιστή και να δημιουργήσει ένα *BinaryReader* και *BinaryWriter* αμέσως.


Η *BinaryReader* χρησιμοποιείται σε ένα ειδικό νήμα που κάνει μια ανάγνωση αποκλεισμού. Όταν φτάνει τα δεδομένα που δημιουργούν ένα συμβάν και να περάσει τα δεδομένα για την επεξεργασία. Ξεβγάλτε και επαναλάβετε.


Η *BinaryWriter* χρησιμοποιείται όταν τα δεδομένα φτάνει στη άλλο νήμα. Αυτή τη στιγμή συμβαίνει να είναι το νήμα UI, αλλά δεν πρέπει να είναι. Ένα πράγμα που είναι γνωστό είναι ότι δεν θα είναι το ίδιο νήμα που ο αναγνώστης κλείδωμα λειτουργεί.


Μόνο μία διαδικασία θα έχει πρόσβαση είτε χειριστή ρεύμα σε έναν χρόνο γι 'αυτό δεν χρειάζεται να ανησυχείτε για δύο θέματα που χτυπούν την *BinaryWriter* με τη μία, αλλά θα προστεθούν ασφάλισης.


Αυτό λειτουργεί, αλλά από το σπείρωμα είναι δύσκολο δεν θέλω απλά να αναλάβουν αυτό είναι σωστό σχεδιασμό. Έχω άλλες ερωτήσεις σχετικά με τις ζωές αυτών που θα κληθούν χωριστά.

 
Είναι ασφαλές να χρησιμοποιήσετε ένα BinaryReader και BinaryWriter που προέρχονται από την ίδια πηγή ρεύματος σε ξεχωριστά θέματα;
==================================================================================================================================



Αρκετά ασαφείς, δημοσιεύσετε πάντα ένα απόσπασμα. Αν τυλίξτε το NetworkStream μπορείτε να πάρετε από TcpClient.GetStream () τότε δεν υπάρχει πρόβλημα. Ρητά αναφέρεται στο άρθρο MSDN για NetworkStream:



> 
> Ανάγνωσης και εγγραφής μπορούν να πραγματοποιηθούν ταυτόχρονα σε ένα στιγμιότυπο της κλάσης NetworkStream χωρίς την ανάγκη για συγχρονισμό. Εφ 'όσον υπάρχει ένα μοναδικό νήμα για τις λειτουργίες εγγραφής και ένα μοναδικό νήμα για τις λειτουργίες ανάγνωσης, δεν θα υπάρξει διασταυρούμενη παρεμβολή μεταξύ διαβάζει και να γράφει κλωστές και δεν απαιτείται συγχρονισμός.
> 
> 
> 

 