| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 443 人关注过本帖
标题:关于序列化对象的问题 过程中代码运行到一半就没有往下运行了
只看楼主 加入收藏
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
快速回复:关于序列化对象的问题 过程中代码运行到一半就没有往下运行了
数据加载中...
 
   



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

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