Вызов асинхронного метода несколько раз с другим параметром Silverlight 4.0 - PullRequest
0 голосов
/ 15 марта 2011

Я вызываю асинхронный метод с одним параметром. Он вернет мне результат в соответствии с параметром. Я вызываю этот метод более одного раза с другим значением параметра, но в событии Completed я получаю одно и то же значение для всех.

client.ListAllLookupValuesByTypeCompleted += client_ListAllAddressFormatCompleted;
client.ListAllLookupValuesByTypeAsync("AddressFormat");

client.ListAllLookupValuesByTypeCompleted += client_ListAllPhoneFormatCompleted;
client.ListAllLookupValuesByTypeAsync("PhoneFormat");



void client_ListAllAddressFormatCompleted(object sender, ListAllLookupValuesByTypeCompletedEventArgs e)
        {
            cmbAddressFormat.ItemsSource = e.Result;
        }


void client_ListAllPhoneFormatCompleted(object sender, ListAllLookupValuesByTypeCompletedEventArgs e)
        {
            cmbPhonePrintFormat.ItemsSource = e.Result;
        }

Но получая то же значение в e.Result.

любые предложения. Спасибо.

1 Ответ

0 голосов
/ 17 марта 2011

Ваш метод может возвращать другое значение на основе первого параметра, но оба обработчика будут вызываться в одно и то же время каждый раз, независимо от того, что вы отправили. Если это стандартная ссылка на веб-сервис, вы должны увидеть доступный для вас параметр userState объекта, который можно использовать для определения того, что делать.

client.ListAllLookupValuesByTypeCompleted += client_ListAllLookupValuesCompleted;
client.ListAllLookupValuesByTypeAsync("AddressFormat", true);
client.ListAllLookupValuesByTypeAsync("PhoneFormat", false);



void client_ListAllLookupValuesCompleted(object sender, ListAllLookupValuesByTypeCompletedEventArgs e)
        {
            // e.UserState will either be false or true
            if ((bool)e.UserState)
               cmbAddressFormat.ItemsSource = e.Result;
            else
               cmbPhonePrintFormat.ItemsSource = e.Result;
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...