2015-03-31 139 views
1

我有这样的代码:C#WPF聊天客户端线程

public Model.Seznam<Model.Zprava> Seznam 
    { 
     get 
     { 
      return this.seznam; 
     } 
     set 
     { 
      this.seznam = value; 
      this.ZmenaVlastnosti("Seznam");//ChangeProperty 
     } 
    } 

这是这个列表框

<ListBox HorizontalAlignment="Left" Height="328" Margin="10,10,0,0" VerticalAlignment="Top" Width="285" ItemsSource="{Binding Path=Seznam}" ItemTemplateSelector="{StaticResource VyberSablony}" /> 

的问题是,我在主线程中使用Seznam(添加消息,我发送 - Seznam.Add(..)),我需要添加从其他线程收到的消息。

+0

可能的复制http://stackoverflow.com /问题/ 7839296 /使用这个c-sharp-dispatcher – 2015-03-31 19:13:17

+0

我试过这个: Application.Current.Dispatcher.BeginInvoke((Action)(()=> Seznam.Add(new Model.Zprava(DateTime.Now.ToString() ,“服务器:”+ Zprava,Model.Od.Server))));' 而我得到的“对象引用未设置为实例”。 – Datsheep 2015-04-01 11:27:01

回答

0

解决方案:

public static void UiInvoke(Action a) 
     { 
      Application.Current.Dispatcher.Invoke(a); 
     } 

以及如何调用它:

UiInvoke(() => { Seznam.Add(new Model.Zprava(DateTime.Now.ToString(), data, Model.Od.Server)); });