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 :
Cet article réimplémente une classe de journalisation simple basée sur BlockingCollection.
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 :
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ît Répondre
|