Denna artikel är en spegelartikel om maskinöversättning, klicka här för att hoppa till originalartikeln.

Utsikt: 41603|Svar: 2

[Källa] .NET/C# implementerar enkel loggning baserad på BlockingCollection

[Kopiera länk]
Publicerad den 2021-1-5 14:58:50 | | | |
Jag skrev en enkel loggningshjälpskurs tidigare, kopierad från ett annat ramverk, och testet är inte lätt att använda, enligt följande:

C# är det enklaste sättet att skriva loggar
https://www.itsvse.com/thread-5111-1-1.html
Den här artikeln implementerar en enkel loggningsklass baserad på BlockingCollection.

.NET/C# Trådsäkerhetssamling (sortering)
https://www.itsvse.com/thread-3769-1-1.html
BlockingCollection<T> är en trådsäker samlingsklass som tillhandahåller följande funktionalitet:

Implementera maker-user-modellen.
Lägg till och hämta föremål samtidigt genom multitrådning.
Valfri maximal kapacitet.
När samlingen är tom eller full blockeras den av insättnings- och borttagningsoperationer.
Försök att infoga och ta bort blockeras inte eller sker under en angiven tidsperiod.
Encapsulation implementerar vilken samlingstyp som helst av IProducerConsumerCollection<T>
Använd avbryt-taggen för att utföra avbokningsåtgärden.
Två typer av enums som använder foreach (i Visual Basic, For Each) stöds: skrivskyddade enum. En uppräkning som tar bort en post när en punkt är uppräknad.


Microsoft introducerar:Inloggningen med hyperlänken är synlig.

BlockingCollection är en trådsäker blockeringskö som använder denna funktion för att implementera producent-konsument-läget inom processen, såsom vidarebefordran av meddelanden, loggning med mera.

Anropa dess Add-metod för att lägga till information i kön, och när kön inte har några meddelanden kommer IsCompleted alltid att blockera while-loopen, så att den inte orsakar en dead loop. När ett nytt meddelande kommer ut triggas IsCompleted in while och returnerar bool-typen, vilket gör att exekveringen fortsätter, det vill säga hämtar data från tråden.


Tidigare blockerade vi tråden genom att anropa WaitOne-metoden ManualResetEvent, och anropade Reset och Set-metoderna för att skicka signalen, enligt följande:

c# kapslar in en universell QueueHelper-kö
https://www.itsvse.com/thread-5029-1-1.html


Testet skriver 10 000 loggar, vilket tar mindre än 10 millisekunder, som visas i figuren nedan:



Koden är följande:

Källkodsnedladdning:

Turister, om ni vill se det dolda innehållet i detta inlägg, snällaSvar





Föregående:warning: LF will be replaced by CRLF in xxxx.
Nästa:Entity Framework Frågeoptimering WITH(NOLOCK)
 Hyresvärd| Publicerad den 2021-1-23 11:53:55 |
.NET/C# baseras på BlockingCollection-bakgrundsuppgiftskön
https://www.itsvse.com/thread-9528-1-1.html

Publicerad den 2023-4-24 22:36:31 |
Utmärkt, mycket bra studiematerial
Friskrivning:
All programvara, programmeringsmaterial eller artiklar som publiceras av Code Farmer Network är endast för lärande- och forskningsändamål; Ovanstående innehåll får inte användas för kommersiella eller olagliga ändamål, annars kommer användarna att bära alla konsekvenser. Informationen på denna sida kommer från internet, och upphovsrättstvister har inget med denna sida att göra. Du måste helt radera ovanstående innehåll från din dator inom 24 timmar efter nedladdning. Om du gillar programmet, vänligen stöd äkta programvara, köp registrering och få bättre äkta tjänster. Om det finns något intrång, vänligen kontakta oss via e-post.

Mail To:help@itsvse.com