跨线程操作无效:控制'listBox1'从一个>线程访问,而不是创建它的线程

Dil*_*DiL 4 c# multithreading xmpp

可能重复:
跨线程操作无效:从创建它的线程以外的线程访问控件.

当我尝试将项目添加到ListBox时,我收到以下错误:

跨线程操作无效:控制'listBox1'从其创建的线程以外的线程访问.

这是尝试代码:

private void Form1_Load(object sender, EventArgs e)
{
    Jid jd = new Jid("USERNAME");
    xmpp.Open(jd.User, "PASSWORD");
    xmpp.OnLogin += new ObjectHandler(xmpp_OnLogin);
    agsXMPP.XmppConnection p;
    xmpp.OnPresence += new PresenceHandler(xmpp_OnPresence);
}
void xmpp_OnPresence(object sender, Presence pres)
{
    listBox1.Items.Add(pres.From .User ); --- **HERE I AM GETTING ERROR.**
}
Run Code Online (Sandbox Code Playgroud)

我有点新的C#和线程,我google搜索了许多文章,包括SO,但我仍然不知道如何解决问题.

Zai*_*Ali 13

试试吧

void xmpp_OnPresence(object sender, Presence pres)
    {
  this.Invoke(new MethodInvoker(delegate()
                {

listBox1.Items.Add(pres.From .User ); --- **HERE I AM GETTING ERROR.**

   }));
}
Run Code Online (Sandbox Code Playgroud)