2009-10-06 10 views
1

J'ai une invocation croisée en cours, et l'invocation fonctionne bien, mais j'ai trouvé que tous les appels de fonction suivants doivent être invoqués, sinon, il lance des exceptions, comment est-ce que je vais soit modifier ma commande invoke, soit résoudre une autre solution?Prévenir les exigences Invoke subséquentes dans cross-thread invoque

Ceci est mon invocateur actuelle:

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); 
     } 
} 

Merci à l'avance, Psy

Répondre

1

J'assmue que chat_window est quelque WinForms objet dérivé de Control?

Si tel est le cas, vous souhaiterez probablement utiliser Control.Invoke/Control.BeginInvoke pour regrouper l'appel dans le thread d'interface utilisateur.

oc.Invoke(oc.updateChat, argNames);