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

C#socket客户端接到服务器的返回之后弹出窗口
C# code
 
void ReceiveMsg()
        {
            while (true)
            {
                byte[] msgArr = new byte[1024 * 1024 * 1];//接收到的消息的缓冲区
                int length = 0;
                //接收服务端发送来的消息数据
                length = sokClient.Receive(msgArr);//Receive会阻断线程
                if (msgArr[0] == 0)//发送来的是文字
                {
                    string strMsg = System.Text.Encoding.UTF8.GetString(msgArr, 1, length - 1);
                    if (strMsg == "1")
                    {
                        Form2 frm2 = new Form2();
                        frm2.Show(this);
                    }
                    
                }
            }
                
            
        }


这是接收的部分,运行后窗口时能弹出来,但是弹出后出现未响应状态 不知道怎么弄啊 求帮助 新人第一次发帖啊 求解 谢谢大家

------解决方案--------------------
while (true)是个死循环,你在死循环里面执行 
 Form2 frm2 = new Form2();
 frm2.Show(this);
肯定卡死,多开个线程出来处理frm2.
------解决方案--------------------
窗口主线程的安全保护,用托管解决
------解决方案--------------------
要另起一个现实线程,invoke出来