2010-08-04 4 views
3

Ниже приведен код, который я использовал для использования веб-серфинга в SilverLight.Веб-служба Silverlight

private void button1_Click(object sender, RoutedEventArgs e) 
{ 
     BasicHttpBinding bind = new BasicHttpBinding(); 
     EndpointAddress endpoint = new EndpointAddress("http://loalhost/Service.asmx"); 
     ServiceSoapClient client = new ServiceSoapClient(bind, endpoint); 
     client.RunHelloCompleted += new EventHandler<RunHelloCompletedEventArgs>(client_RunQwinCompleted); 
     client.RunHelloAsync(command); 
} 

void client_RunHelloCompleted(object sender, RunHelloCompletedEventArgs e) 
{ 
     txtProcess.Text=Process(e.Result); 
} 

Я хочу знать так, что после того, как я бегу RunHelloAsync (команда), я хочу, чтобы получить возвращаемый результат не будет завершенного события. Пожалуйста, посоветуй мне. Спасибо.

+0

Почему вы не можете делать то, что вам нужно в завершенном мероприятии? – AnthonyWJones

ответ

3

Простой ответ: вы не можете. Все в Silverlight является асинхронным, поэтому после вызова client.RunHelloAsync(command) невозможно заблокировать и ждать результата.

Длинный ответ: Есть способы имитировать работу с вызовами синхронно, но вызовы все еще выполняются асинхронно. Посмотрите на this thread еще на несколько ответов.