2012-05-17 8 views
3

У меня есть простая служба с помощью одного метода оперативного контракта под названием SumВызов службы WCF из Silverlight

[OperationContact] 
int sum(int i, int q); 

Когда я интегрируя веб-службу в Silverlight приложения, добавив этот код на главную страницу:

ServiceReference1.Service1Client obj = new ServiceReference1.Service1Client(); 

не называть сумма способ. Кроме того, он показывает:

obj.sumAsync(int i, int q) 

ответ

4

Silverlight не позволяет создать прокси-сервер синхронизации для веб-служб. Он использует прокси-модель асинхронного сервиса. Там будут два свойства для каждого OperationContract в Silverlight:

obj.sumAsync(int i, int q, object state) 
obj.sumAsyncCompleted; // Event 

Вы должны попробовать это:

private void CallMethod() 
{  
    obj.sumAsync(2,2); 
    obj.sumAsyncCompleted += (s,e) => 
     { 
      if (e.Error == null) 
      { 
        MessageBox.Show(e.Result.ToString()); 
      } 
     }; 
} 
+0

благодаря сударь получил точку –

+0

Как связать этот e.result с DataGrid в Silverlight? –

+1

Если вы используете шаблон MVVM, который является предпочтительным способом разработки приложений Silverlight, вы должны создать ViewModel и открыть публичное публичное свойство коллекции, которую вы хотите привязать к сетке. но если вы хотите использовать программирование на основе событий, вы можете использовать «datagrid1.ItemsSource = e.Result;» –

1

, которую вы обозначили метод с [OperationContact]. «оперативный контакт» не имеет смысла.

+0

Да, я отметил это как [operationContact]. –

+0

@AbhishekGupta Вы уверены, что отметили хороший ответ как _принятый_? – ken2k

+0

@ ken2k: Спасибо! :-П – abatishchev

1

Silverlight работает с асинхронной моделью программирования. Таким образом, вызовы службы также асинхронны. Вы должны зарегистрировать обратный вызов операции службы перед вызовом асинхронной метод ФОС:

obj.SumAsyncCompleted += SumAsyncCompleted; 
obj.sumAsync(1, 2); 

void SumAsyncCompleted(object sender, SumAsyncCompletedEventArgs e) 
{ 
    //do something with e.Result 
} 
Смежные вопросы