如何在发送邮件时显示进度???????????????
我在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#