Несколько асинхронных вызовов метода веб-сервиса в приложении завершаются ошибкой - PullRequest
3 голосов
/ 13 мая 2010

Я пытаюсь создать приложение, которое подключается к Интернету и потребляет web services для каждой его операции. Что касается меня, я хотел бы использовать async method, который я уже использую, чтобы получить коллекция контактов. Я понял, что когда я делаю то же самое для групп (имеется в виду получение групп асинхронных), у меня возникают ошибки в вызовах, но при использовании обычного вызова это не так. Поэтому я провел некоторые исследования в Интернете и обнаружите, что у многих людей такая же проблема.
Некоторые из них просят использовать 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);
        }
    }     

}

1 Ответ

6 голосов
/ 07 октября 2010

решить. Есть 2 метода с асинхронными вызовами, один с дополнительным параметром Unique ID.each для идентификатора, необходимого для вызова, поэтому я передаю ему новый GUID, и все. Спасибо за попытку помочь мне

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...