2010-05-12 3 views
3

인터넷에 연결되는 응용 프로그램을 만들고 모든 작업에 대해 web services을 사용하려고합니다. 나는 회신 할 때 async method을 사용하고 싶습니다. 나는 연락처의 컬렉션을 얻으려고 이미 사용하고있다. 나는 그룹에서 (비동기 그룹을 얻는 것을 의미하는) 동일한 작업을 수행 할 때 호출에서 오류가 발생한다는 것을 알았지 만, 정상적인 호출을 사용하면 ins't . 그래서 나는 온라인에서 조사를했고 많은 사람들이 같은 문제를 가지고 있음을 발견했다.
그들 중 일부는 WCF을 사용하도록 요청되었습니다 (잭에 대해서는 모르겠다).이를 극복 할 다른 방법이 있는지 알고 싶습니다. 그렇지 않다면 누군가 온라인에서 신뢰할 수있는 리소스를 가르쳐 줄 수 있습니까? 읽기와 여기 도움을 주셔서 감사합니다 내 코드입니다 :응용 프로그램에서 웹 서비스 메서드에 대한 여러 비동기 호출이 예외가 발생하여 실패합니다.

public partial class main : Window 
{ 
    //... 
    private static vmcSession session; 
    private MyService service = new MyService(); 
    private contactInfo[] loadedcontact; 
    //.... 

    public main() 
    { 
     InitializeComponent(); 
     //service.addContactCompleted +=new addContactCompletedEventHandler(addContactCompleted); 
     service.getContactsCompleted += new getContactsCompletedEventHandler(getContactsCompleted); 
     service.getGroupsCompleted += new getGroupsCompletedEventHandler(getGroupsCompleted); 
     fillContents(); 
    } 

    private void getGroupsCompleted(object sender, getGroupsCompletedEventArgs e) 
    { 
     try 
     { 
      groupListBox.ItemsSource = e.Result; 
     } 
     catch (Exception ex) 
     { 
      MessageBox.Show(ex.InnerException.Message); 
     } 
    } 

    private void getContactsCompleted(object sender, getContactsCompletedEventArgs e) 
    { 
     try 
     { 
      loadedcontact = e.Result; 
      contactListBox.ItemsSource = loadedcontact; 
     } 
     catch (Exception ex) 
     { 
      MessageBox.Show(ex.Message); 
     } 
    } 

    private void addContactCompleted(object sender, addContactCompletedEventArgs e) 
    { 
     throw new NotImplementedException(); 
    } 

    public void fillContents() 
    { 
     displayUserInformation(); 
     loadContacts(); 
     service.getGroupsAsync(session.key, null); 
     //groupListBox.ItemsSource = service.getGroups(session.key, null); 
     cmbSenderIds.ItemsSource = service.getSenderIds(session.key, null); 
     if (cmbSenderIds.Items.Count > 0) 
     { 
      cmbSenderIds.SelectedIndex = 0; 
     } 
     loadGrid(); 


    } 


    public void loadContacts() 
    { 
     service.getContactsAsync(session.key, null); 
    } 



    public void displayUserInformation() 
    { 
     lblName.Content = session.user.firstName; 
     lblEmail.Content = session.user.email; 
     lblCreditValue.Content = Decimal.Ceiling(session.user.balance).ToString(); 

    } 


    public void loadGrid() 
    { 
     try 
     { 
      hitoryGrid.ItemsSource = service.viewMessages(session.key, null).ToList(); 
     } 
     catch (Exception ex) 
     { 
      MessageBox.Show(ex.Message); 
     } 
    }  

} 
+0

어떤 오류가 있습니까? –

+0

InnerExeption 메시지가 : '비동기 처리 중에 오류가 발생했습니다. 여러 비동기 동시 작업이 처리되지 않아야합니다.' 답장을 보내 주셔서 감사합니다. –

+0

코드를 게시 할 수 있습니까? SleepAsync를 부르시겠습니까? –

답변

6

호출이 ID를 필요로 들더가 추가 매개 변수 고유 ID.each와 비동기 호출 2 가지 방법, 하나, 그래서 내가 여기에 GUID를 새 통과 해결 그게 다야. 나를 도우려는 것에 대한 고마워.

+0

해결 된 코드를 어떻게 표시 할 수 있습니까? –

관련 문제