标题:关于序列化对象的问题 过程中代码运行到一半就没有往下运行了
只看楼主
killuamusic
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2013-3-25
结帖率:0
已结贴  问题点数:20 回复次数:3 
关于序列化对象的问题 过程中代码运行到一半就没有往下运行了
        public void listrnerserver()
        {
            Byte[] Gbuff = new Byte[1024];
            
            ctrl m = new ctrl();

            MemoryStream mstream = new MemoryStream();
            mstream.Position = 0;
            while (true)
            {
                int i = nstream.Read(Gbuff, 0, Gbuff.Length);
                if (i==0)
                {
                    break;
                }
                else
                {
                    MessageBox.Show("成功获取到数据");
                    mstream.Write(Gbuff, 0, i);
                    //这个地方开始就没有继续往下运行了
                    

                }
            }
            
            mstream.Flush();
            
            mstream.Position = 0;
            BinaryFormatter bformatter = new BinaryFormatter();
            
            if (mstream.Capacity > 0)
            {
                m = (ctrl)bformatter.Deserialize(mstream);
               
            }
            else
            {
                MessageBox.Show("接收的数据为空");
            }
            MessageBox.Show(m.m_ctrl.ToString());
         
               }
搜索更多相关主题的帖子: void 成功 public 
2013-03-25 15:46
qq645485165
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:76
专家分:197
注 册:2013-3-16
得分:10 
                    MessageBox.Show("成功获取到数据");
                    mstream.Write(Gbuff, 0, i);
                    //这个地方开始就没有继续往下运行了
证明i==0跳出循环了
2013-03-25 17:11
killuamusic
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2013-3-25
得分:0 
问题就是连              mstream.Flush();
            
            mstream.Position = 0;
            BinaryFormatter bformatter = new BinaryFormatter();
            
            if (mstream.Capacity > 0)
            {
                m = (ctrl)bformatter.Deserialize(mstream);
               
            }
            else
            {
                MessageBox.Show("接收的数据为空");
            }
            MessageBox.Show(m.m_ctrl.ToString());
         
               }

这里的都没运行
2013-03-25 17:23
yhlvht
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:贵宾
威 望:36
帖 子:707
专家分:4405
注 册:2011-9-30
得分:10 
while (true)
            {
                int i = nstream.Read(Gbuff, 0, Gbuff.Length);
                if (i==0)
                {
                    break;
                }
                else
                {
                    MessageBox.Show("成功获取到数据");
                    mstream.Write(Gbuff, 0, i);
                    //这个地方开始就没有继续往下运行了
                    

                }
            }
你这里好像是个死循环
首先int i = nstream.Read(Gbuff, 0, Gbuff.Length);从内存中读取数据到Gbuff,返回读取长度
假设有读取到数据,即i!=0,进入else
mstream.Write(Gbuff, 0, i);这里又把Gbuff中的数据写回内存
然后下一次循环
继续把写进去内存的内容,又读到Gbuff,然后又写回内存....
继续继续....直到程序抛出异常,然后终止运行
2013-03-25 19:34



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-401859-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.039941 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved