| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1677 人关注过本帖
标题:请高手指点一下邮件发送显示进度条的问题。
只看楼主 加入收藏
meisbrother
Rank: 2
等 级:论坛游民
帖 子:100
专家分:29
注 册:2007-5-11
结帖率:84.62%
收藏
 问题点数:0 回复次数:2 
请高手指点一下邮件发送显示进度条的问题。
想制作一个邮件管理程序,想foxmail一样的功能,谁可以发送,但无法取得附件发送到进度,在发大邮件附件时
想取一个进度如何做,搜了一上午也没找到这方面的例子。
搜索更多相关主题的帖子: 进度 邮件 
2008-11-30 11:14
Kiss_零
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:164
专家分:125
注 册:2008-11-21
收藏
得分:0 
这样么?
using System;
using System.Collections.Generic;
using
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Threading;

namespace ThreadUpdateUI
{
    public partial class Form2 : Form
    {
        public Form2()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            try
            {
                backgroundWorker1.RunWorkerAsync(1000);
            }
            catch (Exception es)
            {

                MessageBox.Show(es.Message);
            }
        }

        private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
        {
            BackgroundWorker bk=sender as BackgroundWorker;//把serder转化为BackgroundWorker(后台操作)
            int count = (int)(e.Argument);//从 DoWorkEventArgs 参数的 Argument 属性中提取该操作所需的所有参数.并保存起来.
            e.Result = longtime(count, bk, e);//将计算的结果赋给 DoWorkEventArgs 的 Result 属性。
        }
        Random rd = new Random();
        long longtime(int pp,BackgroundWorker bk,DoWorkEventArgs e)
        {
            long time=0;
            int i = 0;
            while (i < pp)
            {
                i++;
                //判断是否取消后台操作
                if (bk.CancellationPending)
                {
                    e.Cancel = true;
                    break;
                }
                else
                {
                    time += i;
                }
                //完成率
                int view = (int)((float)i / pp * 100);
                bk.ReportProgress(view);//已完成后台操作的百分完成率,范围0%-100%
                System.Threading.Thread.Sleep(5);//sleep()里面的数字越少就越快
            }
            return time;
        }

        private void backgroundWorker1_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
        {
            if (e.Cancelled)
            {
                MessageBox.Show("取消");
            }
            else
            {
                MessageBox.Show(e.Result.ToString());
            }
        }

        private void backgroundWorker1_ProgressChanged(object sender, ProgressChangedEventArgs e)
        {
            progressBar1.Value = e.ProgressPercentage;//获取异步任务的进度百分比
            label1.Text = e.ProgressPercentage.ToString();//显示出来
        }

        private void button2_Click(object sender, EventArgs e)
        {
            backgroundWorker1.CancelAsync();
        }

    }
}
2008-11-30 12:40
shifu
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2008-10-20
收藏
得分:0 
2楼的代码写的真不错
2008-11-30 13:45
快速回复:请高手指点一下邮件发送显示进度条的问题。
数据加载中...
 
   



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

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