8,734
社区成员
发帖
与我相关
我的任务
分享
#region 定时检测信息
public void GetMessages(object obj)
{
chatServiceClient = new ChatService.ChatServiceClient(binding,endPoint);
chatServiceClient.GetMessagesCompleted += new EventHandler<ChatService.GetMessagesCompletedEventArgs>(GetMessagesComleted);
chatServiceClient.GetMessagesAsync("wengyuli");
}
void GetMessagesComleted(object sender, ChatService.GetMessagesCompletedEventArgs e)
{
ObservableCollection<ChatService.MessageInfo> listMsg = new ObservableCollection<ChatService.MessageInfo>();
if(e.Error==null)
{
this.listMsgs.ItemsSource= e.Result; //这里提示 跨线程错误
}
}
#endregion
if (this.listMsgs.Dispatcher.CheckAccess())
{
this.listMsgs.ItemsSource= e.Result;
}
else
{
this.listMsgs.Dispatcher.BeginInvoke( 这里需要写一个回调方法,也可以是匿名方法);
// 如
this.listMsgs.Dispatcher.BeginInvoke(() => { this.listMsgs.ItemsSource = e.Result; });
}
ObservableCollection<T> source = new ObservableCollection<T>();
this.listMsgs.ItemsSource = this.source ;
...
每次从WCF异步返回时
this.source.Clear();
foreach(T item in e.Result)
{
this.source.Add(T);
}
SynchronizationContext syn;
public void GetMessages(object obj)
{
syn = SynchronizationContext.Current;
chatServiceClient = new ChatService.ChatServiceClient(binding,endPoint);
chatServiceClient.GetMessagesCompleted += new EventHandler<ChatService.GetMessagesCompletedEventArgs>(GetMessagesComleted);
chatServiceClient.GetMessagesAsync("wengyuli");
}
void GetMessagesComleted(object sender, ChatService.GetMessagesCompletedEventArgs e)
{
ObservableCollection<ChatService.MessageInfo> listMsg = new ObservableCollection<ChatService.MessageInfo>();
if(e.Error==null)
{
syn.Post(GetRs,e.Result);
}
}
void GetRs(object rs)
{
this.listMsgs.ItemsSource=rs;
}