개인 메시지 대기열에서 메시지를 가져 오는 Windows 서비스 (C# 4.0)가 있고 각 메시지에 대해 메시지 내용을 기준으로 하나 이상의 전자 메일 (일반적으로 최대 4 또는 5)을 보냅니다.단일 스레드 Windows 서비스 지연 OnStop
메시지 량이 적어서 복잡성을 피하고 서비스는 sinlge-threaded이지만 이메일은 중요하므로 SCM 중지 명령에서 모든 in-process 메시지/전자 메일이 처리/전송되도록해야합니다. 중지가 완료되었습니다.
OnStop에서 상태를 나타내는 정적 "inProcess"플래그를 확인 중이며 설정된 경우 ServiceBase.RequestAdditionalTime (120000)을 호출합니다.
이- [중지 명령 2 분의 요청에도 불구하고, 보내지 않은 일부 전자 메일로 즉시 완료 :
2 문제가 있습니다.
- 효과가 있었다고해도 나는 얼마나 오래 기다려야하는지 추측하고 있습니다.
단일 스레드 서비스에서 이것을 처리하는 가장 좋은 방법은 무엇입니까?
도움 주셔서 감사합니다.
그렉
OK, 둥근에 대한 답변은 실제로 아래 답변에 따라 매우 간단합니다. 마지막 메시지 OnStop의 완료를 강제하지 않고 대신 단지 Queue.EndPeek()을 호출 한 다음 현재 메시지를 대기열에 다시 놓습니다. 다시 시작됩니다. 때로는 분명히 우리를 도망칩니다 .... – Serexx