Denne artikkelen er en speilartikkel om maskinoversettelse, vennligst klikk her for å hoppe til originalartikkelen.

Utsikt: 41603|Svare: 2

[Kilde] .NET/C# implementerer enkel logging basert på BlockingCollection

[Kopier lenke]
Publisert 5.1.2021 14:58:50 | | | |
Jeg skrev en enkel logging-hjelpeklasse før, kopiert fra et annet rammeverk, og testen er ikke enkel å bruke, som følger:

C# er den enkleste måten å skrive logger på
https://www.itsvse.com/thread-5111-1-1.html
Denne artikkelen implementerer en enkel loggingsklasse basert på BlockingCollection.

.NET/C# Trådsikkerhetssamling (sortering)
https://www.itsvse.com/thread-3769-1-1.html
BlockingCollection<T> er en trådsikker samlingsklasse som tilbyr følgende funksjonalitet:

Implementer maker-bruker-modellen.
Legg til og hent gjenstander samtidig gjennom multitråding.
Valgfri maksimal kapasitet.
Når samlingen er tom eller full, blokkeres den av insert- og fjerningsoperasjoner.
Forsøk på innsetting og fjerning blokkeres ikke eller skjer i en spesifisert tidsperiode.
Innkapsling implementerer enhver samlingstype av IProducerConsumerCollection<T>
Bruk avbrytelsestaggen for å utføre kanselleringshandlingen.
To typer enums som bruker foreach (i Visual Basic, For Each) støttes: skrivebeskyttede enums. En oppramsing som fjerner et element når et element er oppnummerert.


Microsoft introduserer:Innloggingen med hyperkoblingen er synlig.

BlockingCollection er en trådsikker blokkeringskø, som bruker denne funksjonen til å implementere produsent-forbruker-modus i prosessen, som for eksempel videresending av meldinger, logging osv.

Kaller Add-metoden for å legge til informasjon i køen, og når køen ikke har meldinger, vil IsCompleted alltid blokkere while-løkken, slik at den ikke forårsaker en død løkke. Når en ny melding kommer ut, vil IsCompleted in while bli trigget og returnere bool-typen, noe som får kjøringen til å fortsette, det vil si å hente data fra tråden.


Tidligere blokkerte vi tråden ved å kalle WaitOne-metoden ManualResetEvent, og kalle Reset og Set-metodene for å sende signalet, som følger:

c# kapsler inn en universell QueueHelper-kø
https://www.itsvse.com/thread-5029-1-1.html


Testen skriver 10 000 logger, noe som tar mindre enn 10 millisekunder, som vist i figuren nedenfor:



Koden er som følger:

Nedlasting av kildekode:

Turister, hvis dere vil se det skjulte innholdet i dette innlegget, vær så snillSvare





Foregående:warning: LF will be replaced by CRLF in xxxx.
Neste:Entity Framework Spørringsoptimalisering WITH(NOLOCK)
 Vert| Publisert 23.01.2021 11:53:55 |
.NET/C# er basert på BlockingCollection bakgrunnsoppgavekøen
https://www.itsvse.com/thread-9528-1-1.html

Publisert 24.04.2023 kl. 22:36:31 |
Utmerket, veldig godt studiemateriale
Ansvarsfraskrivelse:
All programvare, programmeringsmateriell eller artikler publisert av Code Farmer Network er kun for lærings- og forskningsformål; Innholdet ovenfor skal ikke brukes til kommersielle eller ulovlige formål, ellers skal brukerne bære alle konsekvenser. Informasjonen på dette nettstedet kommer fra Internett, og opphavsrettstvister har ingenting med dette nettstedet å gjøre. Du må fullstendig slette innholdet ovenfor fra datamaskinen din innen 24 timer etter nedlasting. Hvis du liker programmet, vennligst støtt ekte programvare, kjøp registrering, og få bedre ekte tjenester. Hvis det foreligger noen krenkelse, vennligst kontakt oss på e-post.

Mail To:help@itsvse.com