2013-01-03 3 views
0


Я немного запутался в использовании Диспетчера. У меня есть 5 сетки в XAP и я пытаюсь связать каждый из них с данными из службы WCF
Диспетчер интерфейса Silverlight - правильная реализация

void MainPage_Loaded(object sender, RoutedEventArgs e) 
    { 
     System.Threading.ThreadPool.QueueUserWorkItem(new System.Threading.WaitCallback(GetData)); 
     //This is followed by getting data for other grids 
    } 

    private void GetData(object state) 
    { 
     Dispatcher.BeginInvoke(delegate() 
      { 
       WCFservice.ReadDataCompleted += new EventHandler<ReadDataCompletedEventArgs>(WCFservice_GetData); 
       WCFservice.ReadDataAsync(); 
      }); 

    } 

    void WCFservice_GetData(object sender, ReadDataCompletedEventArgs e) 
    { 
     //is this correct 
     myGrid.ItemsSource = myCollection; 
     //OR should I use dispatcher here as well when I bind to the grid 
     Deployment.Current.Dispatcher.BeginInvoke(() => { myGrid.ItemsSource = myCollection; }); 
    } 

ответ

0

Правильная реализация выглядит следующим образом

private void GetData(object state) 
{ 
    //dont use dispatcher here 
      WCFservice.ReadDataCompleted += new EventHandler<ReadDataCompletedEventArgs>(WCFservice_GetData); 
      WCFservice.ReadDataAsync(); 


} 

void WCFservice_GetData(object sender, ReadDataCompletedEventArgs e) 
{ 
    //use dispatcher here 
    Deployment.Current.Dispatcher.BeginInvoke(() => { myGrid.ItemsSource = myCollection; }); 
} 
Смежные вопросы