Cet article est un article miroir de traduction automatique, veuillez cliquer ici pour accéder à l’article original.

Vue: 41603|Répondre: 2

[Source] .NET/C# implémente une journalisation simple basée sur BlockingCollection

[Copié le lien]
Publié le 5-01-2021 à 14:58:50 | | | |
J’ai déjà écrit un cours d’aide à la journalisation simple, copié d’un autre framework, et le test n’est pas facile à utiliser, comme suit :

C# est la façon la plus simple d’écrire des journaux
https://www.itsvse.com/thread-5111-1-1.html
Cet article réimplémente une classe de journalisation simple basée sur BlockingCollection.

Collection de sécurité de fils .NET/C# (classement)
https://www.itsvse.com/thread-3769-1-1.html
BlockingCollection<T> est une classe de collection thread-safe qui offre les fonctionnalités suivantes :

Implémentez le modèle maker-user.
Ajouter et récupérer des objets en même temps via le multithreading.
Capacité maximale optionnelle.
Lorsque la collection est vide ou pleine, elle est bloquée par des opérations d’insertion et de suppression.
Les tentatives d’insertion et de retrait ne bloquent pas et ne se produisent pas pendant une période spécifiée.
L’encapsulation implémente tout type de collection d’IProducerConsumerCollection<T>
Utilisez l’onglet annulation pour effectuer l’action d’annulation.
Deux types d’enums qui utilisent foreach (dans Visual Basic, For Each) sont pris en charge : enums en lecture seule. Une énumération qui supprime un élément lorsqu’un élément est énuméré.


Microsoft présente :La connexion hyperlientérée est visible.

BlockingCollection est une file d’attente de blocage sécurisée pour les threads, utilisant cette fonctionnalité pour implémenter le mode producteur-consommateur au sein du processus, comme le transfert de messages, la journalisation, etc.

Appelez sa méthode Add pour ajouter de l’information à la file d’attente, et lorsque la file n’a aucun message, IsCompleted bloquera toujours la boucle while, afin de ne pas provoquer de boucle morte. Lorsqu’un nouveau message apparaît, l’IsCompleted in while sera déclenché et retournera le type bool, ce qui permet à l’exécution de continuer à récupérer les données du thread.


Auparavant, nous avions bloqué le thread en appelant la méthode WaitOne de ManualResetEvent, appelant les méthodes Reset et Set pour transmettre le signal, comme suit :

c# encapsule une file universelle QueueHelper
https://www.itsvse.com/thread-5029-1-1.html


Le test écrit 10 000 logs, ce qui prend moins de 10 millisecondes, comme montré dans la figure ci-dessous :



Le code est le suivant :

Téléchargement du code source :

Touristes, si vous voulez voir le contenu caché de ce post, s’il vous plaîtRépondre





Précédent:warning: LF will be replaced by CRLF in xxxx.
Prochain:Optimisation des requêtes du Entity Framework AVEC(NOLOCK)
 Propriétaire| Publié le 23-01-2021 à 11:53:55 |
.NET/C# est basé sur la file d’attente de tâches en arrière-plan BlockingCollection
https://www.itsvse.com/thread-9528-1-1.html

Publié le 24-04-2023 à 22:36:31 |
Excellent et très bon matériel d’étude
Démenti:
Tous les logiciels, supports de programmation ou articles publiés par Code Farmer Network sont uniquement destinés à l’apprentissage et à la recherche ; Le contenu ci-dessus ne doit pas être utilisé à des fins commerciales ou illégales, sinon les utilisateurs assumeront toutes les conséquences. Les informations sur ce site proviennent d’Internet, et les litiges de droits d’auteur n’ont rien à voir avec ce site. Vous devez supprimer complètement le contenu ci-dessus de votre ordinateur dans les 24 heures suivant le téléchargement. Si vous aimez le programme, merci de soutenir un logiciel authentique, d’acheter l’immatriculation et d’obtenir de meilleurs services authentiques. En cas d’infraction, veuillez nous contacter par e-mail.

Mail To:help@itsvse.com