Silverlight 4.0 Silverlight UI Dispatcher-正确的实现

Silverlight 4.0 Silverlight UI Dispatcher-正确的实现,silverlight-4.0,silverlight-5.0,Silverlight 4.0,Silverlight 5.0,我对使用调度器有点困惑。我在xap中有5个网格,我正试图将它们中的每一个都与来自WCF服务的数据绑定 void MainPage_Loaded(object sender, RoutedEventArgs e) { System.Threading.ThreadPool.QueueUserWorkItem(new System.Threading.WaitCallback(GetData)); //This is followed by getting d


我对使用调度器有点困惑。我在xap中有5个网格,我正试图将它们中的每一个都与来自WCF服务的数据绑定

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; }); 
    }
void主页\u已加载(对象发送方,路由目标)
{
System.Threading.ThreadPool.QueueUserWorkItem(新的System.Threading.WaitCallback(GetData));
//然后获取其他网格的数据
}
私有void GetData(对象状态)
{
Dispatcher.BeginInvoke(委托()
{
WCFservice.ReadDataCompleted+=新事件处理程序(WCFservice_GetData);
WCFservice.ReadDataAsync();
});
}
void WCFservice_GetData(对象发送方,ReadDataCompletedEventArgs e)
{
//这是正确的吗
myGrid.ItemsSource=myCollection;
//或者当我绑定到网格时,我应该在这里使用dispatcher吗
Deployment.Current.Dispatcher.BeginInvoke(()=>{myGrid.ItemsSource=myCollection;});
}

正确的实现如下

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; }); 
}
private void GetData(对象状态)
{
//不要在这里使用dispatcher
WCFservice.ReadDataCompleted+=新事件处理程序(WCFservice_GetData);
WCFservice.ReadDataAsync();
}
void WCFservice_GetData(对象发送方,ReadDataCompletedEventArgs e)
{
//在这里使用调度程序
Deployment.Current.Dispatcher.BeginInvoke(()=>{myGrid.ItemsSource=myCollection;});
}