문제

C# 데스크탑 응용 프로그램이 있으며 문제없이 웹 서비스를 소비합니다 (WSDL은 "서비스 참조 추가"에 의해 추가되므로 객체를 생성하고 그 기능을 호출합니다).

이제 긴 폴링 기술을 사용하고 싶지만 고객의 관점에서이를 수행하는 방법을 알 수 없습니다.

타임 아웃을 구성하는 방법? 이것에 전용 스레드를 사용해야합니까? C# 데스크탑 응용 프로그램에 대한 예가 있습니까? (아무것도 찾지 못함)

감사합니다, 댐

도움이 되었습니까?

해결책

웹 서비스 객체에서 타임 아웃을 구성 할 수 있어야합니다. 세부 사항은 정확히 어떤 클래스를 사용하고 있는지에 따라 다르지만 WebClientProtocol.Timeout 예를 들어.

이제 전용 스레드에서 동기식으로 호출하거나 비동기 웹 서비스로 전화를 걸어 서비스가 답장 될 때 실행할 콜백을 지정하십시오 (아마도 스레드 풀 스레드). 이 경우 비동기 호출 자체에서 시간 초과를 지정할 수 있습니다. 다시 한번, 정확히 어떤 종류의 웹 서비스 프록시 클래스가 가지고 있는지에 따라 다릅니다.

이렇게하면 응답을 기다리는 스레드를 "폐기"할 필요가 없지만 비동기 프로그래밍 모델이 동기식보다 이해하기 어렵다는 것을 알 수 있습니다. 한 번 에이 요청 중 하나 또는 두 개의 요청 만 있다면 추가 스레드가 문제가되지 않을 것입니다. 500 개의 다른 서비스의 응답을 기다리고 있다면, 그것은 다른 문제이며 비동기 모델은 확실히 갈 길이 될 것입니다.

다른 팁

스레딩 문제는 Jon의 답변을 참조하십시오.

타임 아웃 문제의 경우 다음은 해결책이 있습니다. 2008 년에 WSDL에서 "서비스 참조"를 추가하면 기본적으로 WCF를 사용하며 타임 아웃 값을 설정하는 방법을 찾을 수 없습니다.

따라서 서비스 참조를 마우스 오른쪽 버튼으로 클릭하면 "웹 참조"(Advanced / Add Web Reference)를 선택해야합니다. 이렇게하면 "정상적인"웹 서비스 만 사용하며 타임 아웃 매개 변수를 사용할 수 있습니다.

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