C#WPF聊天客户端线程
问题描述:
我有这样的代码: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(..)
),我需要添加从其他线程收到的消息。
答
解决方案:
public static void UiInvoke(Action a)
{
Application.Current.Dispatcher.Invoke(a);
}
以及如何调用它:
UiInvoke(() => { Seznam.Add(new Model.Zprava(DateTime.Now.ToString(), data, Model.Od.Server)); });
答
使用调度:
Application.Current.Dispatcher.BeginInvoke((Action)(() => ZmenaVlastnosti("Seznam")));
https://msdn.microsoft.com/en-us/library/cc190824(v=vs.110).aspx
可能的复制http://*.com /问题/ 7839296 /使用这个c-sharp-dispatcher – 2015-03-31 19:13:17
我试过这个: Application.Current.Dispatcher.BeginInvoke((Action)(()=> Seznam.Add(new Model.Zprava(DateTime.Now.ToString() ,“服务器:”+ Zprava,Model.Od.Server))));' 而我得到的“对象引用未设置为实例”。 – Datsheep 2015-04-01 11:27:01