2015-07-07 4 views
0

Шаг 1: Я назначил значение id равным нулю.Потребление Webservice в приложении Silverlight

Шаг 2: Я попытался обновить значение идентификатора с помощью возврата службы. Но он не был обновлен немедленно.

Шаг 3: так что _objsomeClass.SetId = id; значение Значение равно нулю. Здесь мне нужно значение возврата службы для назначения для _objsomeClass.SetId

Шаг 4: После выполнения цикла For значение _objsomeClass.SetId = id; присвоенный из Webservice return Value.

Мне нужно установить значение, которое возвращается из webservice до выполнения цикла for?

public void Save_Click(object sender, RoutedEventArgs e) 
{ 
    int id= 0; 
    Service.Client Clientobj = new ChatACDService.ChatACDServiceClient(); 

    Clientobj .GetIdCompleted += (s, ev) => 
    { 
     id = ev.Result; 
    }; 

    Clientobj .GetIdAsync();  

    _objsomeClass.SetId= id; 

    for (int i = 0; i < Agent.Items.Count; i++) 
    { 
     //Some Process 
    } 
} 

ответ

1

Если я правильно прочитал ваш вопрос, я думаю, что вижу вашу проблему. Проблема в том, что метод GetIdAsync, который вы вызываете, не блокирует выполнение кода, как предполагает название. Что вам нужно сделать, это переместить этот цикл в блок GetIdCompleted, чтобы он запускался после завершения вызова веб-службы.

Есть другие способы управления асинхронным возвращения, мой личный фаворит Rx Framework, его большое для построения цепочки асинхр созовет, проверить его https://msdn.microsoft.com/en-us/data/gg577609.aspx

Смежные вопросы