2009-10-06 3 views
1

크로스 스레드 호출이 발생하고 호출이 제대로 작동하지만 모든 후속 함수 호출이 호출되어야 함을 발견했습니다. 그렇지 않으면 예외를 발생시킵니다. 내 invoke 명령을 수정하거나 다른 해결책을 통해이를 수정합니까?크로스 스레드 호출 내에서 후속 호출 요구 사항 방지

이 내 현재 호출자입니다 : chat_window 일부 윈폼이 Control에서 파생 된 개체임을 사전에

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

감사합니다,

답변

1

내가 assmue 싸이?

그렇다면 Control.Invoke/Control.BeginInvoke를 사용하여 호출을 UI 스레드로 마샬링합니다.

oc.Invoke(oc.updateChat, argNames);