本帖最后由 lsy_pt 于 2011-08-14 13:12:06 编辑

解决方案 »

  1.   

    你可以计算出有多少个用户,
    processBar1.Maximum = 用户数;
    processBar1.Minimum = 0;
    完成一个用户就
    processBar1.Value+=1;
      

  2.   

    当然不能!在发送完成之前,你怎么知道总时间是多久呢?所以只能如1楼那样做!这个正是windows,也是所有非实时性操作系统的异步特点,就好比那句老话:“哪儿黑了哪儿歇”,没办法事先计划。
      

  3.   

    这个一般的做法就是一直滚啊滚,
    完了从头再来,一直到全部工作完成。参照windows的启动画面。
      

  4.   

    这样的事情其实不用搞什么进度条,如果时间很长,谁没事在那看你发啊,你做个windows的服务什么的,后台自动发就完了。
      

  5.   


    private void backgroundWorker1_ProgressChanged(object sender,
                ProgressChangedEventArgs e)
            {
                this.progressBar1.Value = e.ProgressPercentage;//这里手工计算progresspercentage,根据已经发了多少邮件/邮件总数来手工控制进度条
            }
    用backgroundworker 就成
    http://msdn.microsoft.com/zh-cn/library/system.componentmodel.backgroundworker(VS.80).aspx
      

  6.   

    刚刚看帖子偶然看到的 http://blog.csdn.net/charrys/article/details/6687310
      

  7.   

    如果想详细计算的话,参照以下思路:
    1、分成两个进度条:当前邮件进度和总进度。
    2、当前邮件进度:计算邮件总大小,按照已发送的byte来显示进度,来根据实时网速估计剩余时间。
    3、总进度条按照所有邮件大小和已发送邮件总大小来显示进度。