Ez a cikk egy tükör gépi fordítás, kérjük, kattintson ide, hogy ugorjon az eredeti cikkre.

Nézet: 41603|Válasz: 2

[Forrás] A .NET/C# egyszerű naplózást valósít meg a BlockingCollection alapú

[Linket másol]
Közzétéve: 2021-1-5 14:58:50 | | | |
Korábban írtam egy egyszerű naplózási segédosztályt, amit másoltam egy másik keretrendszerről, és a teszt nem könnyű használni, a következők szerint:

A C# a legegyszerűbb módja a naplók írásának
https://www.itsvse.com/thread-5111-1-1.html
Ez a cikk egy egyszerű naplózási osztályt valósít meg újra, amely a BlockingCollection alapú rendszeren alapul.

.NET/C# Szálbiztonsági gyűjtemény (összeállítás)
https://www.itsvse.com/thread-3769-1-1.html
A BlockingCollection<T> egy szál-biztonságos gyűjtési osztály, amely a következő funkciókat biztosítja:

Valósítsd meg a készítő-felhasználó modellt.
Hozzáadni és hozni egyidejűleg tárgyakat multithreadingen keresztül.
Opcionális maximális kapacitás.
Ha a gyűjtemény üres vagy tele van, beadás és eltávolítás műveletek blokkolják.
A behelyezési és eltávolítási kísérletek nem blokkolnak vagy nem történnek meg meghatározott időn át.
Az encapsulation bármilyen IProducerConsumerCollection <T>gyűjteménytípust valósít meg
Használd a cancel címkét a törlési művelet végrehajtásához.
Kétféle enum, amely foreach (Visual Basic-ban, For Each) támogatott: csak olvasható enumok. Egy felsorolás, amely eltávolít egy elemet, amikor egy elemet felsorolnak.


Microsoft bemutatja:A hiperlink bejelentkezés látható.

A BlockingCollection egy szálbiztonságú blokkoló sor, amely ezt a funkciót használja a gyártó-fogyasztó mód megvalósítására a folyamaton belül, például üzenettovábbítás, naplózás stb.

Hívjuk az Add metódut, hogy információt adj hozzá a sorhoz, és ha a sorban nincsenek üzenetek, az IsCompleted mindig blokkolja a while hurkot, így nem okoz holtciklust. Amikor új üzenet jelenik meg, az IsCompleted in while aktiválódik, és visszaadja a bool típust, így a végrehajtás folytatódik, vagyis adatokat kap a szálból.


Korábban a ManualResetEvent WaitOne metóduát hívtuk le, a Reset és Set metódusok segítségével a jel továbbításához a következőképpen blokkoltuk a szálat:

c# egy univerzális QueueHelper queue-t kapszulál
https://www.itsvse.com/thread-5029-1-1.html


A teszt 10 000 naplót ír, ami kevesebb mint 10 milliszekundumot vesz igénybe, ahogy az alábbi ábrán látható:



A kódex a következő:

Forráskód letöltés:

Turisták, ha szeretnétek megnézni ennek a bejegyzésnek a rejtett tartalmát, kérlekVálasz





Előző:warning: LF will be replaced by CRLF in xxxx.
Következő:Entity Framework lekérdezés optimalizálása WITH(NOLOCK)
 Háziúr| Közzétéve 2021-1-23 11:53:55 |
A .NET/C# a BlockingCollection háttérfeladatsorán alapul
https://www.itsvse.com/thread-9528-1-1.html

Közzétéve: 2023-4-24 22:36:31 |
Kiváló, nagyon jó tanulási anyag
Lemondás:
A Code Farmer Network által közzétett összes szoftver, programozási anyag vagy cikk kizárólag tanulási és kutatási célokra szolgál; A fenti tartalmat nem szabad kereskedelmi vagy illegális célokra használni, különben a felhasználók viselik az összes következményet. Az oldalon található információk az internetről származnak, és a szerzői jogi vitáknak semmi köze ehhez az oldalhoz. A fenti tartalmat a letöltés után 24 órán belül teljesen törölni kell a számítógépéről. Ha tetszik a program, kérjük, támogassa a valódi szoftvert, vásároljon regisztrációt, és szerezzen jobb hiteles szolgáltatásokat. Ha bármilyen jogsértés történik, kérjük, vegye fel velünk a kapcsolatot e-mailben.

Mail To:help@itsvse.com