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




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


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


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


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


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


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



> 
> Ανάγνωσης και εγγραφής μπορούν να πραγματοποιηθούν ταυτόχρονα σε ένα στιγμιότυπο της κλάσης NetworkStream χωρίς την ανάγκη για συγχρονισμό. Εφ 'όσον υπάρχει ένα μοναδικό νήμα για τις λειτουργίες εγγραφής και ένα μοναδικό νήμα για τις λειτουργίες ανάγνωσης, δεν θα υπάρξει διασταυρούμενη παρεμβολή μεταξύ διαβάζει και να γράφει κλωστές και δεν απαιτείται συγχρονισμός.
> 
> 
>
<p><strong> συνολικά: </strong></p><p>τόσο το put όσο και το post μπορούν να χρησιμοποιηθούν για τη δημιουργία.</p><p>πρέπει να ρωτήσετε "σε τι εκτελείτε τη δράση;" να διακρίνετε τι πρέπει να χρησιμοποιείτε. ας υποθέσουμε ότι σχεδιάζετε ένα api για να κάνετε ερωτήσεις. εάν θέλετε να χρησιμοποιήσετε το post τότε θα το κάνετε σε μια λίστα ερωτήσεων. εάν θέλετε να χρησιμοποιήσετε το put τότε θα το κάνετε αυτό σε μια συγκεκριμένη ερώτηση.</p><p><strong> μεγάλη και οι δύο μπορούν να χρησιμοποιηθούν, έτσι ποιο πρέπει να χρησιμοποιήσω στο restful σχεδιασμό μου: </strong></p><p>δεν χρειάζεται να υποστηρίζετε τόσο το put όσο και το post.</p><p>το οποίο χρησιμοποιείται παραμένει στο χέρι σας. αλλά θυμηθείτε να χρησιμοποιήσετε το σωστό, ανάλογα με το αντικείμενο που αναφέρετε στο αίτημα.</p><p>μερικές σκέψεις:</p><ul> <li>ονομάζετε ρητά τα αντικείμενα url που δημιουργείτε ή αφήστε το διακομιστή να αποφασίσει; εάν τους ονομάσετε τότε χρησιμοποιήστε put. εάν αφήσετε τον διακομιστή να αποφασίσει στη συνέχεια, χρησιμοποιήστε το post.</li> <li>put είναι idempotent, οπότε αν put ένα αντικείμενο δύο φορές, δεν έχει καμία επίδραση. αυτή είναι μια ιδιοκτησία της νίκαιας, οπότε θα μπορούσα να χρησιμοποιήσω το put όταν ήταν δυνατόν.</li> <li>μπορείτε να ενημερώσετε ή να δημιουργήσετε έναν πόρο με put με την ίδια διεύθυνση url αντικειμένου</li> <li>με το post μπορείτε να έχετε 2 αιτήματα που εισέρχονται ταυτόχρονα για τροποποιήσεις σε μια διεύθυνση url και μπορεί να ενημερώσουν διαφορετικά μέρη του αντικειμένου.</li> </ul><p><strong> ένα παράδειγμα: </strong></p><p> <a href="https://stackoverflow.com/questions/256349/what-are-the-best-common-restful-url-verbs-and-actions/256359#256359">έγραψα τα εξής ως μέρος μιας άλλης απάντησης σχετικά με το so</a> :</p><blockquote> <p><strong> post: </strong></p> <p>χρησιμοποιείται για την τροποποίηση και την ενημέρωση ενός πόρου</p> <pre><code>post /questions/&lt;existing\_question&gt; http/1.1 host: www.example.com/ </code></pre> <p>σημειώστε ότι το ακόλουθο είναι ένα σφάλμα:</p> <pre><code>post /questions/&lt;new\_question&gt; http/1.1 host: www.example.com/ </code></pre> <p>εάν η διεύθυνση url δεν έχει δημιουργηθεί ακόμη, δεν θα πρέπει να χρησιμοποιείτε το post για να το δημιουργήσετε ενώ καθορίζετε το όνομα. αυτό θα πρέπει να έχει ως αποτέλεσμα ένα σφάλμα 'πόρος δεν βρέθηκε' επειδή το <code>&lt;new\_question&gt;</code> δεν υπάρχει ακόμα. πρέπει πρώτα να τοποθετήσετε τον πόρο <code>&lt;new\_question&gt;</code> στον διακομιστή.</p> <p>θα μπορούσατε όμως να κάνετε κάτι τέτοιο για να δημιουργήσετε πόρους χρησιμοποιώντας post:</p> <pre><code>post /questions http/1.1 host: www.example.com/ </code></pre> <p>σημειώστε ότι σε αυτήν την περίπτωση το όνομα του πόρου δεν έχει καθοριστεί, η διαδρομή url των νέων αντικειμένων θα σας επιστραφεί.</p> <p><strong> σημειωση: </strong></p> <p>χρησιμοποιείται για τη δημιουργία ενός πόρου ή για την αντικατάστασή του. ενώ ορίσετε τους πόρους νέα διεύθυνση url.</p> <p>για έναν νέο πόρο:</p> <pre><code>put /questions/&lt;new\_question&gt; http/1.1 host: www.example.com/ </code></pre> <p>για να αντικαταστήσετε μια υπάρχουσα πηγή:</p> <pre><code>put /questions/&lt;existing\_question&gt; http/1.1 host: www.example.com/ </code></pre></blockquote> Κάνατε πολύ καλή δουλειά στο να συνοψίσετε τι είναι φοβερό στο Node.js. Η αίσθησή μου είναι ότι το Node.js είναι ιδιαίτερα κατάλληλο για εφαρμογές όπου θα θέλατε να διατηρήσετε μια μόνιμη σύνδεση από το πρόγραμμα περιήγησης πίσω στον διακομιστή. Χρησιμοποιώντας μια τεχνική γνωστή ως ["long-polling"](https://en.wikipedia.org/wiki/Push_technology#Long_polling), μπορείτε να γράψετε μια εφαρμογή που στέλνει ενημερώσεις στον χρήστη σε πραγματικό χρόνο. Η πραγματοποίηση long polling σε πολλούς από τους γίγαντες του διαδικτύου, όπως το [Ruby on Rails](https://en.wikipedia.org/wiki/Ruby_on_Rails) ή το [Django](https://en.wikipedia.org/wiki/Django_%28web_framework%29), θα δημιουργούσε τεράστιο φόρτο στον διακομιστή, επειδή κάθε ενεργός πελάτης τρώει μια διεργασία του διακομιστή. Αυτή η κατάσταση ισοδυναμεί με επίθεση [tarpit](https://en.wikipedia.org/wiki/Tarpit_(networking)). Όταν χρησιμοποιείτε κάτι όπως το Node.js, ο διακομιστής δεν έχει ανάγκη να διατηρεί ξεχωριστά νήματα για κάθε ανοιχτή σύνδεση. 


Αυτό σημαίνει ότι μπορείτε να δημιουργήσετε μια [εφαρμογή συνομιλίας με βάση το πρόγραμμα περιήγησης](https://github.com/rivalslayer/node_chat) σε Node.js που δεν χρειάζεται σχεδόν καθόλου πόρους συστήματος για να εξυπηρετεί πολλούς πελάτες. Κάθε φορά που θέλετε να κάνετε αυτού του είδους τη μακροχρόνια αναζήτηση, το Node.js είναι μια εξαιρετική επιλογή. 


Αξίζει να αναφέρουμε ότι και η Ruby και η Python έχουν εργαλεία για να κάνουν κάτι τέτοιο ([eventmachine](http://rubyeventmachine.com/) και [twisted](https://twistedmatrix.com/trac/), αντίστοιχα), αλλά ότι το Node.js το κάνει εξαιρετικά καλά, και από την αρχή. Η JavaScript είναι εξαιρετικά καλά τοποθετημένη σε ένα μοντέλο ταυτόχρονης λειτουργίας βασισμένο σε callback, και υπερέχει εδώ. Επίσης, η δυνατότητα σειριοποίησης και αποσειριοποίησης με JSON εγγενές τόσο στον πελάτη όσο και στον διακομιστή είναι αρκετά έξυπνη.


Ανυπομονώ να διαβάσω άλλες απαντήσεις εδώ, αυτή είναι μια φανταστική ερώτηση.


Αξίζει να επισημάνουμε ότι το Node.js είναι επίσης εξαιρετικό για καταστάσεις στις οποίες θα επαναχρησιμοποιήσετε πολύ κώδικα σε όλο το χάσμα πελάτη/εξυπηρετητή. Το [Meteor framework](https://meteor.com) το κάνει αυτό πολύ εύκολο, και πολλοί άνθρωποι προτείνουν ότι αυτό μπορεί να είναι το μέλλον της ανάπτυξης ιστοσελίδων. Μπορώ να πω από την εμπειρία μου ότι είναι πολύ διασκεδαστικό να γράφεις κώδικα στο Meteor, και ένα μεγάλο μέρος αυτού είναι να ξοδεύεις λιγότερο χρόνο σκεπτόμενος πώς θα αναδομήσεις τα δεδομένα σου, ώστε ο κώδικας που εκτελείται στο πρόγραμμα περιήγησης να μπορεί εύκολα να τα χειριστεί και να τα μεταβιβάσει πίσω.


Εδώ είναι ένα άρθρο για το Pyramid και το long-polling, το οποίο αποδεικνύεται ότι είναι πολύ εύκολο να ρυθμιστεί με λίγη βοήθεια από το gevent: [*TicTacToe και Long Polling με την Pyramid*](http://michael.merickel.org/2011/6/21/tictactoe-and-long-polling-with-pyramid/). προς [@gnutechie](/u/gnutechie) και λοιπούς λινουξάδες

χίλια συγνώμη σας μπέρδεψα.

η ερώτηση μου στο άλλο νήμα αφορά την επικοινωνία του κινητού προς τον εκτυπωτή.

ο scaner μου δουλεύει κανονικά μέσω virtual box & windows xp αρκετές μέρεςχαρις και στη δική σας βέβαια βοήθεια και παρέλειψα να ενημερώσω.

κανονικά… οι ηλιακοί θερμοσίφωνες κλειστού κυκλώματος διπλής ενέργειας έχουν 2 βαλβίδες ασφαλείας. η πρώτη είναι στην εισαγωγή του κρύου νερού και η δεύτερη είναι στην τάπα του κλειστού κυκλώματος του αντιψυκτικού. αν στάζει η πρώτη θέλει έλεγχο να βρεθεί η αιτία (παλαιότητα ή υπερπίεση συνήθως). αν στάζει η δεύτερη του αντιψυκτικού, τότε έχει τρυπήσει το μπόιλερ , και καλό είναι να ξεβιδώσετε την βαλβίδα για να μην ζορίζονται οι συλλέκτες μέχρι να αλλάξετε το μπόιλερ. τρουλλινός γιώργος , υδραυλικός , αθήνα , αττική , 6932860310. <p>το <strong>server</strong> (που αποστέλλεται το αίτημα post) πρέπει να περιλαμβάνει την κεφαλίδα <code>access-control-allow-headers</code> (κλπ) <strong>στην απάντησή του</strong>. η τοποθέτησή τους στο αίτημά σας από τον πελάτη δεν έχει καμία επίδραση.</p><p>αυτό οφείλεται στο γεγονός ότι εναπόκειται στον διακομιστή να καθορίσει ότι δέχεται αιτήσεις διασταυρούμενης προέλευσης (και ότι επιτρέπει την κεφαλίδα <code>content-type</code> αίτησης και ούτω καθεξής) - ο πελάτης δεν μπορεί να αποφασίσει για τον εαυτό του ότι ένας δεδομένος διακομιστής πρέπει να επιτρέπει την cors.</p> αν δεν έχεις πρόβλημα, καλύτερα μην κάνεις τίποτα. όπως το βλέπω μάλλον είναι αδιάφοροι αισθητήρες που δεν αναγνωρίζονται σωστά. (μπορείς να ελπίζεις ότι απλά θα φτιάξει σε επόμενους πυρήνες linux, αλλά πιστεύω δεν είναι καν σημαντικό θέμα) αν ο κυκλοφορητής είναι μικρός ή κάπου υπάρχει βάνα που δεν είναι εντελώς ανοικτή τότε η γραμμή του κρύου θα είναι σχετικά κρύα και το καζάνι θα ανεβάζει γρήγορα θερμοκρασία, αν όμως η γραμμή του κρύου ζεσταίνεται γρήγορα, τότε ή οι διακόπτες (στο μονοσωλήνιο εξωτερικού βρόγχου ) ή τα σώματα είναι λάθος τοποθετημένα ή η ροή του νερού ανάποδη . αν το καζάνι δεν ανεβάζει θερμοκρασία ίσως να είναι μικρό. τέλος αν θερμαίνεται ένας μόνο μέρος της εγκατάστασης πχ το μπόιλερ ίσως να θέλει εξισορρόπηση το δίκτυο. τρουλλινός γιώργος , υδραυλικός , αθήνα , αττική , 6932860310. σωστά το λέτε όμως για να γίνει αυτό θα πρέπει να μπορούν να απομονωθούν οι σωλήνες ζεστού και κρύου των μπαταριών και στην συνέχεια να συνδεθούν με αυτόν τον τρόπο. κάτι που είναι σχετικά εύκολο αν έχετε πίνακα υδροληψίας ή εξωτερικές σωλήνες . τρουλλινός γιώργος , υδραυλικός , αθήνα , αττική , 6932860310. αν ο θερμοσίφωνας έχει κατασκευαστεί μόνο για κάθετη τοποθέτηση τότε δεν επιτρέπεται να τον βάλουμε οριζόντια, γιατί δεν θα γεμίσει πλήρως και υπάρχει κίνδυνος για την αντίσταση και για ατμοποίηση. υπάρχουν όμως και κάποιοι θερμοσίφωνες που είναι κατασκευασμένοι για να λειτουργούν σε διάφορες θέσεις, και πληροφορίες για αυτούς θα πάρετε μόνο από τους κατασκευαστές αυτών των θερμοσιφώνων. τρουλλινός γιώργος , υδραυλικός, αθήνα, αττική, 6932860310. σωστά τα έκανα.

συγγνώμη για την αναστάτωση.

είχε μια επιλογή μέσα στο router που μόλις ξε κλικαρα, δούλεψαν όλα εντάξει.

παρέλαβα νέο modem και είχε μια επιλογή αναδρομολόγησης των dns, μόλις την έβγαλα όλα εντάξει.