现象是这样的:我在文件传输窗口中新建线程,线程中有socket的connect方法连接服务器,之后传输文件。窗口启动后一片白色,应该是界面被阻塞住了吧,但文件传输能完成。为什么新线程中的socket也能阻塞创建线程的窗口呢?但是我最关系的问题是文件传输窗口的使用问题。就是制作一个有进度条的,显示文件大小,已经传输的大小,计算传输速度的窗口(比如IE下载时那种窗口)。我在这个窗口中新建连接,监控文件传输,更新窗口的显示(VS2005非创建控件线程更新控件还要用Invoke,真烦),设想了很多种方式,总是有错误,希望哪个高手指点我几句,关于文件传输时使用窗口监视传输应该怎么设计。非常感谢~!

解决方案 »

  1.   

    新开的线程应该不会影响窗口线程啊.我也这么干过,没出现什么问题.
    是不是新线程的优先级开高了?要不弄成low
      

  2.   

    不好意思我没描述明白,我把新建线程的语句放在了窗体load里,load在窗体加载前完成,线程没完成就显示窗体,所以窗体被阻塞(应该是这个原因),但是我的文件传输窗口却是一开启就要开始文件传输了,我想到一个还凑合的解决方法。原来我使用窗体的show方法显示它,现在我使用ShowDialog方法显示它,就不会阻塞了,我在一个线程里ShowDialog,这样模式对话框也不会中断原来的父窗体。 不知道这样解决够不够好,谁有更好的请说一说 交流一下
      

  3.   

    //窗体load里只有窗体加载完成了才能显示出来,你把要做的操作都放那下面,窗体不变白才怪
    呵呵
      

  4.   

    thread = new Thread(new ThreadStart(getDate));
    thread.Start();getDate中写传输你的文件的代码就OK!
      

  5.   

    “   thread  =  new  Thread(new  ThreadStart(getDate));  
    thread.Start();  ”我的意思是新开窗口也给一个线程,这样模式对话框不会中断父对话框,传文件当然也是放在窗口中新建的一个线程里,这样不会阻塞窗口
    不管怎么说我那个解决方法还算有效的,结帖拉~~4个人刚好一人5分呵呵