2010-08-22 3 views
0

내 SL4 응용 프로그램에서 svc.SubmitAsync() 서비스 호출이 있습니다. 이것은 비동기 호출이기 때문에 메소드가 실행되면 내 코드가 다음 행으로 넘어갑니다. 사용자가 올바른 사용자 이름과 암호를 입력하는 한 괜찮습니다. 그렇지 않으면 EndSubmit()이 예외를 throw합니다. EndSubmit()은 자동 생성 Silverlight 코드의 일부인 References.cs에 있습니다.Silverlight에서 비동기 호출 중에 어떻게 오류를 처리합니까?

나는 try-catch에서 svc.SubmitAsync()를 래핑하려고 시도했으나 이것은 비동기 호출이며 예외가 발생하기 전에 try-catch 블록이 완료된다.

어떻게이 오류를 잡을 수 있습니까?

감사합니다.

업데이트 1

public void SubmitTweetAsync(TestSilverlightApp.svc.Tweet tweet, object userState) { 
      if ((this.onBeginSubmitTweetDelegate == null)) { 
       this.onBeginSubmitTweetDelegate = new BeginOperationDelegate(this.OnBeginSubmitTweet); 
      } 
      if ((this.onEndSubmitTweetDelegate == null)) { 
       this.onEndSubmitTweetDelegate = new EndOperationDelegate(this.OnEndSubmitTweet); 
      } 
      if ((this.onSubmitTweetCompletedDelegate == null)) { 
       this.onSubmitTweetCompletedDelegate = new System.Threading.SendOrPostCallback(this.OnSubmitTweetCompleted); 
      } 
      base.InvokeAsync(this.onBeginSubmitTweetDelegate, new object[] { 
         tweet}, this.onEndSubmitTweetDelegate, this.onSubmitTweetCompletedDelegate, userState); 
     } 

업데이트 2 - 이것은 WCF 서비스입니다.

+0

SubmitAsync 코드를 게시 할 수 있습니까? – dtb

+0

어떤 유형의 서비스입니까? WCF? –

+0

언제든지 BeginSubmit 메서드가 있습니까? – dtb

답변

0

일반적으로 예외에 대한 try/catch가있는 일치하는 완료 이벤트입니다.

비동기 작업이므로 완료 될 때까지 성공했는지 실패했는지는 알 수 없지만 두 경우 모두 완료됩니다.

0

전달 된 개체 완료된 이벤트 핸들러는 오류 메시지를 보유해야합니다. 예를 들어

공공 무효 OnSubmitCompleted (TweetOperation 연산)

1

오류 필드를 확인해야 {(op.ErrorMessage! = NULL)이 오류

을 처리 // 경우 } 처리기에서받는 매개 변수

private void Client_SubmitCompleted(object sender, SubmitCompletedEventArgs e) 
{ 
    if (e.Cancelled) 
    { 
     //... 
    } 
    else if (e.Error != null) 
    { 
     // the service operation threw an exception 
     throw e.Error; 
    } 
    else 
    { 
     //... 
    } 
관련 문제