Предотвращение требований последующих вызовов в многопоточных вызовах - PullRequest
1 голос
/ 06 октября 2009

У меня происходит перекрестный вызов, и этот вызов работает нормально, однако я обнаружил, что все последующие вызовы функций должны вызываться также, в противном случае он вызывает исключения, как мне выполнить модификацию команды invoke или с помощью другого решения исправить это?

Это мой текущий призыватель:

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

1 Ответ

1 голос
/ 10 декабря 2009

Я предполагаю, что chat_window - это некоторый объект WinForms, полученный из Control?

Если это так, то вы, вероятно, захотите использовать Control.Invoke / Control.BeginInvoke, чтобы перенаправить вызов обратно в поток пользовательского интерфейса.

oc.Invoke(oc.updateChat, argNames);
...