无法在后面的代码中随机方法访问列表框(C#)

时间:2017-12-10 06:49:03

标签: c# .net wpf xaml listbox

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的新手,现在有点丢失了......请帮助!!

1 个答案:

答案 0 :(得分:1)

您无法从非UI线程访问控件。您必须使用a dispatcher将其封送回UI线程:

displaymsg.Dispatcher.Invoke(() => displaymsg.Items.Add(msg));

如果您不想等待结果,也可以发射并忘记:

displaymsg.Dispatcher.BeginInvoke(() => displaymsg.Items.Add(msg));