2015-03-31 175 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)); });