Ten artykuł jest lustrzanym artykułem tłumaczenia maszynowego, kliknij tutaj, aby przejść do oryginalnego artykułu.

Widok: 57872|Odpowiedź: 7

[Źródło] c# enkapsuluje uniwersalną kolejkę QueueHelper

[Skopiuj link]
Opublikowano 29.08.2018 10:39:11 | | | |
W codziennym rozwoju możemy używać kolejek, które są strukturą pamięci masowej, umożliwiającą osiągnięcie zasady "pierwszy wszedł, pierwszy wyszedł".

Scenariusze aplikacyjne: zapisywanie logów, wysyłanie maili itd

Jeśli musimy zapisywać logi interfejsu każdego użytkownika żądającego naszych danych, nie musimy zapisywać logu za każdym razem, gdy użytkownik o to prosi, możemy umieścić zawartość logu w kolejce i pozwolić innym wątkom ją wykonać, aby nie wpływać na efektywność aplikacji.

Kolejną zaletą jest to, że dodanie danych do kolejki w przypadku współbieżności, używając pojedynczego wątku do wykonania danych kolejki, może uniknąć wielu wyjątków; jeśli współbieżność (wielowątkowość), dostęp do tego samego fizycznego pliku powoduje wyjątki. (w zależności od dostępności)

Uniwersalne podejście kolejkowe:

To jest klasa abstrakcyjna i musisz ją odziedziczyć oraz zaimplementować metodę abstrakcji Execute (abstrakcyjne). Ponieważ nie wiem, jaki typ danych chcesz przetwarzać, używa się tu generyków, czyli Encja ma typ ciągu znaków, parametry metody to typ ciągu, a dane, które przetwarzasz, to dane typu ciągu znaków.

ConcurrentQueue Thread-safe zapewnia brak wyjątków w środowisku wielowątkowym.

ManualResetEvent do sterowania sygnałem wątku,W przeszłości sprawdzaliśmy kolejkę pod kątem danych co kilka sekund lub minutTeraz dodajemy dane do kolejki i wystarczy przekazać sygnał!

Użycie:

(Koniec)




Poprzedni:Konfiguracja Projektu proces produkcji pakietu instalacyjnego Chcę skopiować główny plik wyjściowy
Następny:Problem redis Chinese nie może być odpowiednio przedstawiony
 Ziemianin| Opublikowano 24.05.2019 10:13:59 |
Polec framework:

asp.net tutorial dotyczący frameworka Hangfire w tle zadania
https://www.itsvse.com/thread-7611-1-1.html
(Źródło: Architect_Programmer)
Opublikowano 10.09.2019 10:26:26 |
Dlaczego metoda Execute w klasie Test nie jest wykonywana, gdy ją wykonuję?
 Ziemianin| Opublikowano 10.09.2019 21:52:44 |
hano7758 Opublikowano 10.9.2019 10:26
Dlaczego metoda Execute w klasie Test nie jest wykonywana, gdy ją wykonuję?

Czy możesz wrzucić swój kod?
 Ziemianin| Opublikowano 23.01.2021 11:53:46 |
.NET/C# opiera się na kolejce zadań w tle BlockingCollection
https://www.itsvse.com/thread-9528-1-1.html

Opublikowano 26.07.2021 14:09:53 |
Jak możesz zobaczyć kod
Opublikowano 26.09.2022 22:20:08 |
Muszę nauczyć się go używać
Zrzeczenie się:
Całe oprogramowanie, materiały programistyczne lub artykuły publikowane przez Code Farmer Network służą wyłącznie celom edukacyjnym i badawczym; Powyższe treści nie mogą być wykorzystywane do celów komercyjnych ani nielegalnych, w przeciwnym razie użytkownicy ponoszą wszelkie konsekwencje. Informacje na tej stronie pochodzą z Internetu, a spory dotyczące praw autorskich nie mają z nią nic wspólnego. Musisz całkowicie usunąć powyższą zawartość z komputera w ciągu 24 godzin od pobrania. Jeśli spodoba Ci się program, wspieraj oryginalne oprogramowanie, kup rejestrację i korzystaj z lepszych, autentycznych usług. W przypadku naruszenia praw prosimy o kontakt mailowy.

Mail To:help@itsvse.com