C# wpf 聊天客户端线程
C# wpf chat client thread
我有这个代码:
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(..)
),我需要添加从其他线程接收到的消息。
使用调度程序:
Application.Current.Dispatcher.BeginInvoke((Action)( () => ZmenaVlastnosti("Seznam") ));
https://msdn.microsoft.com/en-us/library/cc190824(v=vs.110).aspx
解决方案:
public static void UiInvoke(Action a)
{
Application.Current.Dispatcher.Invoke(a);
}
以及如何称呼它:
UiInvoke(() => { Seznam.Add(new Model.Zprava(DateTime.Now.ToString(), data, Model.Od.Server)); });
我有这个代码:
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(..)
),我需要添加从其他线程接收到的消息。
使用调度程序:
Application.Current.Dispatcher.BeginInvoke((Action)( () => ZmenaVlastnosti("Seznam") ));
https://msdn.microsoft.com/en-us/library/cc190824(v=vs.110).aspx
解决方案:
public static void UiInvoke(Action a)
{
Application.Current.Dispatcher.Invoke(a);
}
以及如何称呼它:
UiInvoke(() => { Seznam.Add(new Model.Zprava(DateTime.Now.ToString(), data, Model.Od.Server)); });