2012-08-23 2 views
3

HTTP 요청을 수신 대기해야하는 Windows 서비스가 있습니다. 나는 이것을 위해 HttpListener를 사용하고있다. 이 서비스는 성공적으로 수행됩니다. 그러나 시스템이 시작될 때 서비스가 자동으로 시작되도록 설정하면 HTTP 초기화가 지연됩니다. HttpListener 생성자는 반환하는 데 1 ~ 2 분이 소요됩니다. 따라서 사용자는 성공적으로 로그인되어 있으며 예를 들어 그의 메신저는 이미 온라인 상태입니다. HttpListener가 HTTP.SYS : 커널 모드 http listener를 사용하고 있다는 것을 읽었습니다. 시스템이 초기화되기 때문에 정상적인 것일 수 있습니다.HttpListener 생성자가 시스템 시작시 너무 오래 걸립니다.

내 질문은 : 1) HttpListener가 초기화에 지연이있는 것은 정상적인가요? 2) HttpListener를 사용하지 않는 경우를 제외하고 그러한 지연을 피할 수있는 대안이 있습니까?

편집 : Windows 7에서는 문제가 재현되지 않았습니다. Windows XP 컴퓨터에서만 문제를 재현 할 수있었습니다.

+0

HttpListener에 대한 내 경험 (솔직히 .. 제한적)은 제작 과정에서 이러한 지연이 없었습니다. 사실, 거의 즉시 초기화되는 것을 기억합니다 ... –

+0

시스템 시작시 거의 즉시 초기화가 수행 되었습니까? – inso

+0

음. 그러나 그것이 당신의 질문이라면 내 대답은 컴퓨터에 따라 매번 변경 될 것입니다. –

답변

0

해결 방법을 찾았습니다.

서비스의 "OnStart 스레드"에서 HttpListener 생성자를 호출하고있었습니다. 다른 스레드에서 생성자 호출을 이동하고 서비스의 OnStart 메서드에서 반환하는 경우 HttpListener는 평소와 같이 빠르게 초기화됩니다.

나는 왜 그런지 모르겠다. HttpListener에 필요한 일부 구성 요소가 시스템 시작시 나중에 나중에 초기화된다고 가정 할 수 있습니다.

그런데 문제는 Windows 7에서 재현되지 않았습니다. Windows XP 컴퓨터에서만 문제를 재현 할 수있었습니다.

관련 문제