네트워크에서 여러 서버의 WMI를 통해 정보를로드하는 C# 서비스가 있습니다. 각 서버가 내 ServerInfo 클래스의 인스턴스로 표시되도록 설정했습니다. 메인 프로그램에서 서버의 ArrayList를 통해 구성 및 루프를 초기화하고 ThreadPool.QueueUserWorkItem을 사용하여 작업자 스레드를 시작하여 각 서버를 초기화하거나 업데이트합니다.완료된 스레드의 System.Timers.Timer 이벤트
구성에서 지정한 시간이 지난 후에 백그라운드에서 각 서버를 새로 고치고 싶습니다. 첫 번째 생각은 각 서버 인스턴스에 System.Timers.Timer 개체를 설정하고 스레드 새로 고침 메서드가 완료되면 타이머를 시작하는 것입니다. 주 프로그램은 경과 된 이벤트를 기다리고 해당 서버 인스턴스의 새로 고침 메소드를 다시 시작합니다.
그러나 일단 워커 스레드가 완료되면 타이머가 죽어서 경과 이벤트를 보내지 않는 것처럼 보입니다 (개체가 더 이상 아무 것도 처리하지 않으므로 명백한 것처럼 보입니다).
이와 같은 업데이트를 트리거하려면 어떻게해야합니까?
'Timer'가 "죽어 가고있다"고 생각하는 곳에 [간단한 예제] (http://sscce.org)를 제공해주십시오. 일반적으로'Timer'는'Timer'를 만든 스레드가 없어지더라도 (그 스레드가 주 스레드가 아니면) 할당 한 메서드를 계속 호출해야합니다. – Kiril