当前位置:编程学习 > C#/ASP.NET >>

C# 线程(ref)问题

本人用C#做一个FTP下载的软件。myftpClient.Get(@filepath, @LU, @filepath, ref f);这是下载的类,ret f用来传递显示下载字节,               int iBytes = socketData.Receive(buffer, buffer.Length, 0); f += iBytes;就是类中读取下载字节数。用ref函数传递,页面以时钟刷新f显示字节数。
我这个是开辟新的线程做的,可不知什么原因,有时候下载到一半时,这个线程不动没反应了,页面f显示的子节数据停止了。不知什么原因。请高人帮助我。 --------------------编程问答-------------------- 是不是线程终止了?或者挂起了
你给个代码截图啊 --------------------编程问答-------------------- 线程一定结束了

不如试用while循环搞它看看  --------------------编程问答-------------------- catch一下异常信息 --------------------编程问答-------------------- 学习 --------------------编程问答--------------------             while (true)
            {
                 //System.Threading.Thread.Sleep(20);
                 int iBytes = socketData.Receive(buffer, buffer.Length, 0);
                 t += iBytes;
                 output.Write(buffer, 0, iBytes);
                 if (iBytes <= 0)
                 {
                    break;
                 }

            }
我就是用这个去循环的,t += iBytes;这个t,就是返回界面下载的字节数,可其实没下载完,这个T的值就静止了。UI主线程还能动,不知什么原因。线程不会跑了,请各位帮帮我。
--------------------编程问答-------------------- 不动了?多半是Receive被阻塞了,没有接收到服务器发来的数据了。
这个你要看看FTP的信息交换规则,看看有没有在什么情况下它会停止发送数据。 --------------------编程问答-------------------- 应该是线程序内出现异常退出了 --------------------编程问答-------------------- try ,catch --------------------编程问答-------------------- 捕获异常看看 --------------------编程问答-------------------- 页面以时钟刷新f显示字节数

这是一种多么严重的错误设计啊!!!! --------------------编程问答--------------------
引用 10 楼 battlerxange 的回复:
页面以时钟刷新f显示字节数

这是一种多么严重的错误设计啊!!!!


我想请问个为什么说是个错误啊,我不怎么明白,请赐教 --------------------编程问答--------------------
引用 11 楼 zhou1023 的回复:
引用 10 楼 battlerxange 的回复:
页面以时钟刷新f显示字节数

这是一种多么严重的错误设计啊!!!!


我想请问个为什么说是个错误啊,我不怎么明白,请赐教

你没有错,timer中可以放一些状态,但是不能放业务逻辑,
timer中
你可以btn1.Text=f;
但不能出现长时间的过程。。 --------------------编程问答-------------------- 我说的这个“错误”不是指BUG也不是指代码有问题,是指这种设计方法不太好,最好是用委托之类的来刷新UI界面
不过这个说到底也无所谓
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,