이 글은 기계 번역의 미러 문서이며, 원본 기사로 바로 이동하려면 여기를 클릭해 주세요.

보기: 41603|회답: 2

[출처] .NET/C#은 BlockingCollection 기반의 간단한 로깅을 구현합니다

[링크 복사]
2021-1-5 14:58:50에 게시됨 | | | |
전에 다른 프레임워크에서 복사한 간단한 로깅 도움말 클래스를 작성했는데, 테스트가 사용하기 쉽지 않습니다. 다음과 같습니다:

C#이 로그를 작성하는 가장 쉬운 방법입니다
https://www.itsvse.com/thread-5111-1-1.html
이 글은 BlockingCollection 기반의 간단한 로깅 클래스를 재구현합니다.

.NET/C# 스레드 안전 컬렉션 (콜레이션)
https://www.itsvse.com/thread-3769-1-1.html
BlockingCollection<T>은 다음과 같은 기능을 제공하는 스레드 안전 컬렉션 클래스입니다:

메이커-사용자 모델을 구현하세요.
멀티스레딩을 통해 아이템을 추가하고 동시에 가져오기도 합니다.
선택적 최대 수용 인원.
컬렉션이 비어 있거나 가득 차 있을 때는 삽입 및 제거 연산으로 차단됩니다.
삽입 및 제거 시도는 차단되지 않거나 일정 시간 동안 발생하지 않습니다.
캡슐화는 IProducerConsumerCollection<T>의 모든 유형의 컬렉션을 구현합니다
취소 태그를 사용해 취소 작업을 수행하세요.
foreach를 사용하는 두 가지 유형의 열거(Visual Basic에서는 For Each)가 지원됩니다: 읽기 전용 열거입니다. 항목이 열거될 때 항목을 제거하는 열거입니다.


마이크로소프트가 소개합니다:하이퍼링크 로그인이 보입니다.

BlockingCollection은 스레드 안전 차단 큐로, 이 기능을 사용하여 프로세스 내에서 메시지 전달, 로깅 등과 같은 생산자-소비자 모드를 구현합니다.

Add 메서드를 호출해 큐에 정보를 추가하고, 큐에 메시지가 없으면 IsCompleted가 항상 while 루프를 차단하여 데드 루프를 일으키지 않습니다. 새 메시지가 나오면 IsFinished in while이 트리거되어 불 타입을 반환하여 실행이 계속됩니다. 즉, 스레드에서 데이터를 가져오는 과정입니다.


이전에는 ManualResetEvent의 WaitOne 메서드를 호출하여 Reset 및 Set 메서드를 호출하여 신호를 전달하는 방식으로 스레드를 차단했습니다.

c#은 범용 큐헬퍼 큐를 캡슐화합니다
https://www.itsvse.com/thread-5029-1-1.html


이 테스트는 10,000개의 로그를 기록하며, 이는 10밀리초 미만의 시간에 걸립니다, 아래 그림에서 볼 수 있습니다:



코드는 다음과 같습니다:

소스 코드 다운로드:

관광객 여러분, 이 게시물의 숨겨진 내용을 보고 싶으시다면 부탁드립니다회답





이전의:warning: LF will be replaced by CRLF in xxxx.
다음:Entity Framework 쿼리 최적화 WITH(NOLOCK)
 집주인| 2021-1-23 11:53:55에 게시됨 |
.NET/C#은 BlockingCollection 백그라운드 작업 큐를 기반으로 합니다
https://www.itsvse.com/thread-9528-1-1.html

2023-4-24 22:36:31에 게시됨 |
훌륭하고 훌륭한 학습 자료입니다
면책 조항:
Code Farmer Network에서 발행하는 모든 소프트웨어, 프로그래밍 자료 또는 기사는 학습 및 연구 목적으로만 사용됩니다; 위 내용은 상업적 또는 불법적인 목적으로 사용되지 않으며, 그렇지 않으면 모든 책임이 사용자에게 부담됩니다. 이 사이트의 정보는 인터넷에서 가져온 것이며, 저작권 분쟁은 이 사이트와는 관련이 없습니다. 위 내용은 다운로드 후 24시간 이내에 컴퓨터에서 완전히 삭제해야 합니다. 프로그램이 마음에 드신다면, 진짜 소프트웨어를 지원하고, 등록을 구매하며, 더 나은 진짜 서비스를 받아주세요. 침해가 있을 경우 이메일로 연락해 주시기 바랍니다.

Mail To:help@itsvse.com