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

ψήφοι
0

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

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

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

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

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

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

Δημοσιεύθηκε 30/12/2013 στις 14:49
πηγή χρήστη
Σε άλλες γλώσσες...                            


1 απαντήσεις

ψήφοι
2

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

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

Απαντήθηκε 30/12/2013 στις 15:11
πηγή χρήστη

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more