문제

Windows 서비스에서 사용할 수있는 C#에서 좋은 라이브러리를 찾고 있으며 필요한 모든 멀티 스레딩 기능을 처리합니다.

서비스는 X 분마다 실행되고, 데이터베이스를 호출 할 수 있는지 확인하고, 각각에 대해 스레드를 생성하여 실행합니다.

각 스레드는 예외, 로깅 등을 처리해야합니다.

제안이 있습니까?

도움이 되었습니까?

해결책

이 프로젝트를 고려하십시오http://www.codeplex.com/smartthreadpool

프로젝트 설명

스마트 스레드 풀은 C#로 작성된 스레드 풀입니다. .NET 내장 스레드 풀보다 훨씬 더 발전합니다. 다음은 스레드 풀 기능 목록입니다.

  • 스레드 수는 풀의 스레드의 워크로드에 따라 동적으로 변경됩니다.
  • 작업 항목은 값을 반환 할 수 있습니다.
  • 작업 항목을 취소 할 수 있습니다.
  • 발신자 스레드의 컨텍스트는 작업 항목이 실행될 때 사용됩니다 (제한).
  • 최소 Win32 이벤트 핸들 수를 사용하므로 응용 프로그램의 핸들 수는 폭발하지 않습니다.
  • 발신자는 여러 또는 모든 작업 항목이 완료되기를 기다릴 수 있습니다.
  • 작업 항목은 사후 콜백을 가질 수 있으며 작업 항목이 완료 되 자마자 호출됩니다.
  • 작업 항목과 함께 제공되는 상태 객체는 자동으로 배치 될 수 있습니다.
  • 작업 항목 예외는 발신자에게 다시 전송됩니다.
  • 작업 항목이 우선 순위가 있습니다.
  • 작업 항목 그룹.
  • 발신자는 스레드 풀 및 작업 항목 그룹의 시작을 중단 할 수 있습니다.
  • 스레드가 우선 순위가 있습니다.
  • 싱글 스레드 아파트가있는 COM 객체를 실행할 수 있습니다.
  • 조치 및 기능 대의원 지원.
  • Windowsce 지원 (제한)
  • Maxthreads와 Minthreads는 런 타임에 변경할 수 있습니다.
  • 취소 동작은 불순합니다.

다른 팁

이것은 뺨에 약간의 혀이지만 .NET 프레임 워크는 어떻습니까? 그만큼 System.Threading 네임 스페이스에는 필요한 모든 것이 있습니다.

RX 프레임 워크에서 .NET 4 또는 백 포트를 사용할 수 있다면 작업 병렬 라이브러리가 약간 더 쉽게 만들어 질 수 있지만, 그 없이도 표준 프레임 워크에는 필요한 모든 것이 있습니다.

멀티 스레딩 지원이있는 스케줄링 라이브러리가 필요한 경우 이전에 사용했습니다 : Quartz.net

http://quartznet.sourceforge.net/

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top