Aš parašiau paprastą registravimo pagalbos klasę anksčiau, nukopijuota iš kitos sistemos, ir testas nėra lengva naudoti, taip:
Šiame straipsnyje iš naujo įdiegta paprasta registravimo klasė, pagrįsta BlockingCollection.
"BlockingCollection<T>" yra saugi rinkimo klasė, teikianti šias funkcijas:
Įdiekite kūrėjo-vartotojo modelį. Įtraukite ir gaukite elementus vienu metu naudodami kelių gijų funkciją. Pasirenkama maksimali talpa. Kai rinkinys tuščias arba pilnas, jis blokuojamas įterpimo ir pašalinimo operacijomis. Bandymai įterpti ir pašalinti neblokuojami arba nevyksta tam tikrą laiką. Inkapsuliavimas įgyvendina bet kokio tipo "IProducerConsumerCollection<T>" rinkinį Naudokite atšaukimo žymą, kad atliktumėte atšaukimo veiksmą. Palaikomi dviejų tipų išvardijimai, naudojantys foreach (Visual Basic, For Each): tik skaitomi išvardijimai. Išvardijimas, kuris pašalina elementą, kai elementas išvardijamas.
"Microsoft" pristato:Hipersaito prisijungimas matomas.
"BlockingCollection" yra saugi blokavimo eilė, naudojanti šią funkciją gamintojo-vartotojo režimui įgyvendinti, pvz., pranešimų persiuntimui, registravimui ir kt.
Iškvieskite jo metodą Pridėti, kad įtrauktumėte informaciją į eilę, o kai eilėje nėra pranešimų, "IsCompleted" visada užblokuos kol kilpą, todėl nesukels negyvos kilpos. Kai pasirodys naujas pranešimas, bus suaktyvintas IsCompleted in while ir grąžins bool tipą, todėl vykdymas bus tęsiamas, tai yra, duomenų gavimas iš gijos.
Anksčiau užblokavome giją, iškviesdami "ManualResetEvent" metodą "WaitOne", iškviesdami "Reset" ir "Set" metodus, kad perduotume signalą, taip:
Testas rašo 10 000 žurnalų, o tai trunka mažiau nei 10 milisekundžių, kaip parodyta toliau pateiktame paveikslėlyje:
Kodas yra toks:
Šaltinio kodo atsisiuntimas:
Turistai, jei norite pamatyti paslėptą šio įrašo turinį, prašome Atsakyti
|