2013-03-08 5 views
0

.Net 웹 서비스를 사용하는 Windows Phone 앱을 개발 중입니다. 웹 서비스 메서드를 비동기 적으로 호출하고 UI를 차단하지 않습니다. 예를 들어, 서버에 항공편 도착 목록을 요청하는 코드 샘플은 다음과 같습니다.Windows Phone에서 async webservice 호출 취소하기

service.MobileWSSoapClient Proxy { get; set; } 
Proxy = new service.MobileWSSoapClient(); 
Proxy.GetArrivalsCompleted += proxy_GetArrivalsCompleted; 
Proxy.GetArrivalsAsync(searchFilter); 

내가 다시 같은 방법으로 또는 다른 하나 (예 : 도착 목록을 새로 고치거나 특정 도착 검색)를 호출하는 사용자에게 자유를 줄이 길. 사용자가 서비스에 대한 새 호출을 생성하는 경우 앱은 첫 번째 호출을 "취소"하고 마지막 호출의 결과 만 표시해야합니다. 웹 서비스 호출을 서버에 이미 취소했다면 기술적으로 불가능하다고 생각합니다. 서버 응답을 기다린 다음 무시해야합니다. 그것을 알면, 어떻게 든 그 전화를 쓸모없는 것으로 표시하는 것이 도움이 될 것입니다. 해당 쓸모없는 호출의 응답으로 오류를 수신하면 충분합니다. 내가 상상하거나 필요로하는 의사 코드를 쓸 것이다.

void proxy_GetArrivalsCompleted(object sender, service.GetArrivalsCompletedEventArgs e){ 

    if (e.Error == null){ 
     // DO WORK 
    } 
    else 
    { 
     if(e.Error == Server Exception || e.Error == Connection Exception){ 
     MessageBox.Show("error"); 
     } 
     else if (e.Error == obsolete call){ 
     // DO NOTHING 
     } 
    } 

미리 감사드립니다.

답변

0

시나리오에 BackgroundWorker을 사용할 수 있습니다. 따라서 사용자가 다시 웹 서비스를 호출하면 서비스 호출을 종료하는 백그라운드 워커 프로세스를 취소 할 수 있습니다.

BackgroundWorker here을 사용하는 방법.

+0

내가 BackgroundWorker에서 웹 서버를 호출하면 호출하고 작업을 종료합니다. 그것이 서버 응답 때까지 기다리지 않는다는 것을 의미합니다. – nachoifa