Denne artikel er en spejling af maskinoversættelse, klik venligst her for at springe til den oprindelige artikel.

Udsigt: 41603|Svar: 2

[Kilde] .NET/C# implementerer simpel logning baseret på BlockingCollection

[Kopier link]
Opslået den 5-1-2021 14:58:50 | | | |
Jeg skrev tidligere et simpelt logningshjælpekursus, kopieret fra et andet framework, og testen er ikke let at bruge, som følger:

C# er den nemmeste måde at skrive logs på
https://www.itsvse.com/thread-5111-1-1.html
Denne artikel genimplementerer en simpel logningsklasse baseret på BlockingCollection.

.NET/C# Thread Safety Collection (sortering)
https://www.itsvse.com/thread-3769-1-1.html
BlockingCollection<T> er en trådsikker samlingsklasse, der tilbyder følgende funktionalitet:

Implementér maker-bruger-modellen.
Tilføj og hent genstande samtidig gennem multithreading.
Valgfri maksimal kapacitet.
Når samlingen er tom eller fuld, blokeres den af indsæt og fjern operationer.
Indsæt og fjern forsøg blokeres ikke eller forekommer i en bestemt periode.
Indkapsling implementerer enhver samlingstype af IProducerConsumerCollection<T>
Brug annulleringstagget til at udføre annulleringshandlingen.
To typer enums, der bruger foreach (i Visual Basic, For Each), understøttes: skrivebeskyttede enums. En opremsning, der fjerner et element, når et element bliver opregnet.


Microsoft introducerer:Hyperlink-login er synlig.

BlockingCollection er en trådsikker blokeringskø, der bruger denne funktion til at implementere producer-consumer-tilstand i processen, såsom meddelelsesvideresendelse, logning osv.

Kald dens Add-metode for at tilføje information til køen, og når køen ikke har beskeder, vil IsCompleted altid blokere while-løkken, så den ikke forårsager en død løkke. Når en ny besked kommer ud, vil IsCompleted-in while blive udløst og returnere bool-typen, hvilket får eksekveringen til at fortsætte, det vil sige at hente data fra tråden.


Tidligere blokerede vi tråden ved at kalde WaitOne-metoden ManualResetEvent, hvor vi kaldte Reset og Set-metoderne for at sende signalet, som følger:

c# indkapsler en universel QueueHelper-kø
https://www.itsvse.com/thread-5029-1-1.html


Testen skriver 10.000 logs, hvilket tager mindre end 10 millisekunder, som vist i figuren nedenfor:



Koden er som følger:

Kildekode-download:

Turister, hvis I vil se det skjulte indhold i dette indlæg, så vær venligSvar





Tidligere:warning: LF will be replaced by CRLF in xxxx.
Næste:Entity Framework forespørgselsoptimering WITH(NOLOCK)
 Udlejer| Opslået den 23-1-2021 11:53:55 |
.NET/C# er baseret på BlockingCollection baggrundsopgavekøen
https://www.itsvse.com/thread-9528-1-1.html

Opslået den 24-4-2023 kl. 22:36:31 |
Fremragende, meget godt studiemateriale
Ansvarsfraskrivelse:
Al software, programmeringsmaterialer eller artikler udgivet af Code Farmer Network er kun til lærings- og forskningsformål; Ovenstående indhold må ikke bruges til kommercielle eller ulovlige formål, ellers skal brugerne bære alle konsekvenser. Oplysningerne på dette site kommer fra internettet, og ophavsretstvister har intet med dette site at gøre. Du skal slette ovenstående indhold fuldstændigt fra din computer inden for 24 timer efter download. Hvis du kan lide programmet, så understøt venligst ægte software, køb registrering og få bedre ægte tjenester. Hvis der er nogen overtrædelse, bedes du kontakte os via e-mail.

Mail To:help@itsvse.com