日期:2014-05-19  浏览次数:20990 次

救命啊, 跨线程窗口调用!
原帖:   http://community.csdn.net/Expert/topic/5641/5641924.xml?temp=.9125788;

错误出现在:  
public   void   ShowChatRoom()
                {
                        ChatRoom   room   =   CreateChatRoom();

                        if   (room.InvokeRequired)
                        {
                                EmptyMethod   m   =   new   EmptyMethod(room.Show);
                                //room.Invoke(m);     用此方法调用,   程序没有响应
                                m.Invoke();     //   用此方法调用,   出现跨线程调用控件错误
                             

                                EmptyMethod   m2   =   new   EmptyMethod(room.BringToFront);
                                ////room.Invoke(m2);  
                                room.Invoke(m2);
                        }
                        else
                        {
                                room.Show();
                                room.WindowState   =   System.Windows.Forms.FormWindowState.Normal;
                                room.BringToFront();
                        }                        
                }

怎么解决,   谢谢,谢谢,   再谢谢!!!!


------解决方案--------------------
小伙子,耐心点,像这样的问题一般很少人会帮你解决,因为要花很长的时间.
主要还是你自己,要花很多精力,仔细的查找源码中的错误,一定能解决的
------解决方案--------------------
up
------解决方案--------------------
调试解决吧.在这里也看不出哪里有错误
------解决方案--------------------
尝试修改为:

public void ShowChatRoom()
{
ChatRoom room = CreateChatRoom();

if (room.InvokeRequired)
{
EmptyMethod m = new EmptyMethod(room.Show);
//room.Invoke(m); 用此方法调用, 程序没有响应
this.Invoke(); // 用此方法调用, 出现跨线程调用控件错误


EmptyMethod m2 = new EmptyMethod(room.BringToFront);