1

我有一个跨线程调用正在进行,并且调用工作正常,但是我发现所有后续函数调用也需要调用,否则它会引发异常,我该如何修改我的调用命令,或者通过其他解决方案,解决这个问题?

这是我当前的调用者:

foreach (chat_window oc in open_chats)
{
    if (oc.Name == friend)
    {
        string updmsg = msg.Substring(msg.IndexOf('\n')).Trim();
        string[] argNames = new string[2];
        argNames[0] = friend;
        argNames[1] = updmsg;
        Type t = oc.GetType();

        t.InvokeMember("updateChat", 
            System.Reflection.BindingFlags.InvokeMethod, null, oc, argNames);
        }
}

在此先感谢, Psy

4

1 回答 1

1

我认为这chat_window是一些 WinForms 对象派生自Control?

如果是这样,那么您可能想要使用 Control.Invoke/Control.BeginInvoke 来将调用编组回 UI 线程。

oc.Invoke(oc.updateChat, argNames);
于 2009-12-10T13:58:15.837 回答