日期:2014-05-17  浏览次数:20953 次

Invoke调用了方法自身怎样理解?
在下面的代码中,下面这句代码中委托的方法调用了这个方法自身(方法AddReciveData)。没有见过种使用方法,十分困惑,期待解答,拜谢!!!
InsertRecvDataCallBaCk cb = new InsertRecvDataCallBaCk(AddReciveData);


全部代码:
private void AddReciveData(string s)
        {
            //在线程里以安全方式调用控件
            if (listBox_client.InvokeRequired)
            {
                InsertRecvDataCallBaCk cb = new InsertRecvDataCallBaCk(AddReciveData);
                Invoke(cb, s);
            }
            else
            {
                richTextBox1.AppendText(s);
            }
        }

网络 异步 BeginInvoke

------解决方案--------------------
你这样就无限递归了
而他不是

------解决方案--------------------
http://msdn.microsoft.com/zh-cn/library/system.windows.forms.control.invokerequired.aspx
去看下InvokeRequired是什么意思吧,他不是无限递归,如果可以直接调用,InvokeRequired是false,直接执行else,如果在跨线程调用,则InvokeRequired是ture,然后在InsertRecvDataCallBaCk方法里面再调用AddReciveData的时候,InvokeRequired就是false了,所以会执行else,不是无限递归,最多只会归一回,而你的测试代码死循环了。
------解决方案--------------------
http://bbs.csdn.net/topics/390602838?page=1#post-395674779

你们是一个学校的?