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

Άποψη: 41603|Απάντηση: 2

[Πηγή] Το .NET/C# υλοποιεί απλή καταγραφή με βάση το BlockingCollection

[Αντιγραφή συνδέσμου]
Δημοσιεύτηκε στις 2021-1-5 14:58:50 | | | |
Έγραψα ένα απλό μάθημα βοήθειας καταγραφής πριν, αντιγραμμένο από άλλο πλαίσιο και το τεστ δεν είναι εύκολο στη χρήση, ως εξής:

Η C# είναι ο ευκολότερος τρόπος εγγραφής αρχείων καταγραφής
https://www.itsvse.com/thread-5111-1-1.html
Αυτό το άρθρο υλοποιεί εκ νέου μια απλή κλάση καταγραφής που βασίζεται στο BlockingCollection.

.NET/C# Συλλογή ασφάλειας νημάτων (ταξινόμηση)
https://www.itsvse.com/thread-3769-1-1.html
Το BlockingCollection<T> είναι μια κλάση συλλογής ασφαλούς νήματος που παρέχει τις ακόλουθες λειτουργίες:

Εφαρμόστε το μοντέλο κατασκευαστή-χρήστη.
Προσθέστε και ανακτήστε στοιχεία ταυτόχρονα μέσω πολλαπλών νημάτων.
Προαιρετική μέγιστη χωρητικότητα.
Όταν η συλλογή είναι άδεια ή γεμάτη, μπλοκάρεται με λειτουργίες εισαγωγής και αφαίρεσης.
Οι προσπάθειες εισαγωγής και κατάργησης δεν αποκλείονται ούτε πραγματοποιούνται για μια καθορισμένη χρονική περίοδο.
Το Encapsulation υλοποιεί οποιονδήποτε τύπο συλλογής IProducerConsumerCollection<T>
Χρησιμοποιήστε την ετικέτα ακύρωσης για να εκτελέσετε την ενέργεια ακύρωσης.
Υποστηρίζονται δύο τύποι απαρίθμησης που χρησιμοποιούν foreach (στη Visual Basic, For Each): απαρίθμηση μόνο για ανάγνωση. Μια απαρίθμηση που καταργεί ένα στοιχείο κατά την απαρίθμησή του.


Η Microsoft παρουσιάζει:Η σύνδεση με υπερσύνδεσμο είναι ορατή.

Το BlockingCollection είναι μια ουρά αποκλεισμού ασφαλούς νήματος, η οποία χρησιμοποιεί αυτή τη δυνατότητα για την υλοποίηση της λειτουργίας παραγωγού-καταναλωτή εντός της διαδικασίας, όπως προώθηση μηνυμάτων, καταγραφή κ.λπ.

Καλέστε τη μέθοδο Προσθήκη για να προσθέσετε πληροφορίες στην ουρά και όταν η ουρά δεν έχει μηνύματα, το IsCompleted θα αποκλείει πάντα τον βρόχο while, επομένως δεν θα προκαλεί νεκρό βρόχο. Όταν βγει ένα νέο μήνυμα, το IsCompleted in while θα ενεργοποιηθεί και θα επιστρέψει τον τύπο bool, προκαλώντας τη συνέχιση της εκτέλεσης, δηλαδή την ανάκτηση δεδομένων από το νήμα.


Προηγουμένως, αποκλείσαμε το νήμα καλώντας τη μέθοδο WaitOne του ManualResetEvent, καλώντας τις μεθόδους Reset και Set για να περάσουμε το σήμα, ως εξής:

c# ενσωματώνει μια καθολική ουρά QueueHelper
https://www.itsvse.com/thread-5029-1-1.html


Η δοκιμή γράφει 10,000 αρχεία καταγραφής, κάτι που διαρκεί λιγότερο από 10 χιλιοστά του δευτερολέπτου, όπως φαίνεται στο παρακάτω σχήμα:



Ο κωδικός έχει ως εξής:

Λήψη πηγαίου κώδικα:

Τουρίστες, αν θέλετε να δείτε το κρυφό περιεχόμενο αυτής της ανάρτησης, παρακαλώΑπάντηση





Προηγούμενος:warning: LF will be replaced by CRLF in xxxx.
Επόμενος:Entity Framework Query Optimization WITH(NOLOCK)
 Σπιτονοικοκύρης| Δημοσιεύτηκε στις 2021-1-23 11:53:55 |
Το .NET/C# βασίζεται στην ουρά εργασιών παρασκηνίου BlockingCollection
https://www.itsvse.com/thread-9528-1-1.html

Δημοσιεύτηκε στις 2023-4-24 22:36:31 |
Εξαιρετικό, πολύ καλό υλικό μελέτης
Αποκήρυξη:
Όλο το λογισμικό, το υλικό προγραμματισμού ή τα άρθρα που δημοσιεύονται από το Code Farmer Network προορίζονται μόνο για μαθησιακούς και ερευνητικούς σκοπούς. Το παραπάνω περιεχόμενο δεν θα χρησιμοποιηθεί για εμπορικούς ή παράνομους σκοπούς, άλλως οι χρήστες θα υποστούν όλες τις συνέπειες. Οι πληροφορίες σε αυτόν τον ιστότοπο προέρχονται από το Διαδίκτυο και οι διαφορές πνευματικών δικαιωμάτων δεν έχουν καμία σχέση με αυτόν τον ιστότοπο. Πρέπει να διαγράψετε εντελώς το παραπάνω περιεχόμενο από τον υπολογιστή σας εντός 24 ωρών από τη λήψη. Εάν σας αρέσει το πρόγραμμα, υποστηρίξτε γνήσιο λογισμικό, αγοράστε εγγραφή και λάβετε καλύτερες γνήσιες υπηρεσίες. Εάν υπάρχει οποιαδήποτε παραβίαση, επικοινωνήστε μαζί μας μέσω email.

Mail To:help@itsvse.com