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;});
}