一直在写WEBFORM,这些天要实现一个长时间循环操作、大数据量操作的功能,所以用WINFORM来做。虽然程序的主体做得差不多了,可是一个显示问题不知该怎么办:在FORM上三个textbox(显示正在处理的文件名,显示已经处理的结果数,显示使用的总时间)
我在for循环里用this.textbox1.text = 变量 的方法输出显示,可是整个程序在没有处理结束前像死软件一样,没任何反应,处理结束后,才显示最终的结果。是不是因为我所有的涵数都是写在一个FORM里的问题?搞WINFORM的同志能不能给讲解一下?千万不要觉得我太菜而不帮忙啊!另一个问题是:在程序正在运行的过程中,怎样提前结束所有的操作呢?就像普通的软件上开始后都有一个结束或取消的按钮?

解决方案 »

  1.   

    代理
    回调最好
    MSDN上找找
    就有
      

  2.   

    在"for循环里用this.textbox1.text = 变量 的方法输出显示"下面加一句:Application.DoEvent();试试看!
      

  3.   

    你可以参考一下 Notifying Thread Manager 模式Forces:Use the Notifying Thread Manager pattern when:
    Working with a fat client, Windows forms implementation
    The operation is expected to take an extended or unknown amount of time
    Multiple operations could be processed at once
      

  4.   

    takemoto(竹本)
    非常感谢!效果实现了!可是第二个问题,在程序正在运行的时候怎样做才能很顺利的(不会出现进程中的未响应)结束呢?也就是跳出循环?给讲讲思路就行了。是否需要在类里面定义一个public bool 然后操作这个bool,循环里根据true 或 false 来跳出循环呢?
      

  5.   

    是的,我也遇到过此类的问题,不过,可以在WINFORM的状态栏里就可以显示了,据我分析,可能是线程的问题,默认的是单线程,要想实现,考虑在创建一个线程,利用线程实现
      

  6.   

    线程中执行的涵数,为什么调用线程外的涵数,却不能执行涵数参数呢?
    如:线程外:
    public void show_data(string tempstr)
    {
        this.textbox1.text = tempstr;
    }我在线程执行的涵数中循环调用这个show_data为什么没有反应呢?