使用不同的参数Silverlight 4.0多次调用异步方法

时间:2011-03-15 12:10:58

标签: silverlight-4.0

我正在调用具有单个参数的异步方法,它将根据参数返回结果。我用不同的参数值多次调用该方法,但在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 :(得分:0)

您的方法可能会根据第一个参数返回不同的值,但每次都会同时调用这两个处理程序,无论您发送的是什么。如果这是一个标准的Web服务引用,那么您应该看到一个对象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;
        }