works here ----- crashes here ----- 所以我基于消息队列制作这个服务器客户端聊天系统,在客户端,我有一个接收消息的线程。我的列表框的名称是' displaymsg'
这是我的线程池方法
public void getmsg(object ob)
{
string msg = "";
while (true)
{
msg = mRecieve.GetMessages();
displaymsg.Items.Add(msg);
}
}
但程序在到达displaymsg.Items.Add(msg)部分时崩溃了。
要检查它是否到达那里,如果它工作正常,我用MessageBox.Show(msg)
替换它,它工作正常,我收到从另一端发送的弹出框中的每条消息。我是wpf的新手,现在有点丢失了......请帮助!!
答案 0 :(得分:1)
您无法从非UI线程访问控件。您必须使用a dispatcher将其封送回UI线程:
displaymsg.Dispatcher.Invoke(() => displaymsg.Items.Add(msg));
如果您不想等待结果,也可以发射并忘记:
displaymsg.Dispatcher.BeginInvoke(() => displaymsg.Items.Add(msg));