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

如何在发送邮件时显示进度???????????????

我在windows应用程序中进行发送邮件的操作,有时由于要上传一些比较大的附件或者是由于网速的原因,就导致用户需要等待,目前我只在窗体上显示了"邮件发送中,请等待的"文本框,显然不是很合理,因此想在窗体上显示邮件发送执行的进度,请问该怎么操作啊,以下是我的邮件发送方法:
(请问如何在窗体上显示进度:麻烦说明实现的步骤谢谢)
 public void SendMail()
        {
            try
            {
                FileInfo file = new FileInfo(filename);
                if (file.Exists)
                {
                    if (txtEmail1.Text.Trim() != "")
                    {
                        textBox1.Text += "邮件发送中。。。。。。" + "\r\n";
                        MailAddress from = new MailAddress("jpcx@p-pass.com");

                        string[] strEmailTo = txtEmail1.Text.Trim().Split(';');

                        foreach (string emailto in strEmailTo)
                        {
                            if (emailto.Split('@').Length <= 2)
                            {
                                MailMessage aMessage = new MailMessage();
                                MailAddress to = new MailAddress(emailto);

                                aMessage.From = from;
                                aMessage.To.Add(to);
                                aMessage.Subject = "今日报表传输成功,请查阅!";
                                Attachment data = new Attachment(filename, MediaTypeNames.Application.Octet);


                                aMessage.Attachments.Add(data);

                                SmtpClient client = new SmtpClient("mail.p-pass.com", 25);

                                System.Net.NetworkCredential login = new System.Net.NetworkCredential("jpcx", "2008jp123456");

                                client.Credentials = login;
                                client.Timeout = 9000000;
                                client.Send(aMessage);
                                data.Dispose();
                            }
                            else
                            {
                                Sucess = false;
                            }
                        }
                        if (Sucess)
                        {
                            MessageBox.Show("邮件发送成功!");
                            textBox1.Text += "邮件发送成功!" + "\r\n";
                        }
                        else
                        {
                            MessageBox.Show("邮件未全部发送成功!");
                            textBox1.Text += "邮件未全部发送成功!" + "\r\n";
                        }
                    }
                    else
                    {
                        MessageBox.Show("请输入您要发送的目标邮箱!");
                    }
                }
                else
                {
                    MessageBox.Show("该附件不存在,请检查!");
                }
            }
            catch (Exception ex)
            {
                textBox1.Text += "发送邮件失败" + "\r\n";
                MessageBox.Show(ex.Message.ToString());

            }
            finally
            {
                thread1 = null;
            }
        
        } --------------------编程问答-------------------- 思路:把发送邮件的过程SendMail()放到一个新线程里面,在新线程里面控制一个进度条,这样应该可以的 --------------------编程问答-------------------- 我也想尝试这种方法,我的这个方法也是放在一个新线程中执行,但这个控制条该怎么控制呢?> --------------------编程问答-------------------- 控制条 就是一个视觉感受 没那么精确 看起来 再处理就可以了。 --------------------编程问答-------------------- 用多线程! --------------------编程问答-------------------- --------------------编程问答-------------------- C/S 多线程    B/S  AJAX --------------------编程问答-------------------- 你要尝试用多线程才能解决这个问题
比如,你已经将你的邮件方法放在一个新的线程里面执行了,那么你就需要在你的主线程里面放置一个进度条,同时在你进度条线程与邮件线程之间通信,使邮件线程的进度更改能够被主线程知道.其中的方法就比较多了.一个简单点的可以使用vs2005里面的空间backgroundworker来执行,具体看msdn比较简单....
补充:.NET技术 ,  C#
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,