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:
Ez a cikk egy egyszerű naplózási osztályt valósít meg újra, amely a BlockingCollection alapú rendszeren alapul.
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:
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érlek Válasz
|