利用委托异步发送邮件
2009-01-04 18:19
274 查看
故事是这样发生的:
越来越多的用户在网站购买了东西,每成功订下一个定单,就要向用户的邮箱发送一封EMAIL。当邮件正在发送时,占用的资源会非常多,用户也需要等待,用户越多,这样用户页面上的等待时间就会变得很长,为了解决这个问题,决定把发送EMAIL和短信的都改成异步执行的。
异步发送邮件,有两种做法;一种是大家在网上一搜就能找到一堆的发送方法,这种方法都是在发送email的时候再进行异步操作,如这篇文章(http://blog.csdn.net/liuduoqing/archive/2007/12/19/1952934.aspx)中写到的。
但是这种方法在我这里需要的成本太高,因为发送邮件的方法是封装好的,不便更改,所以只能从调用这个方法上想办法,在这里我找到了委托,可以异步调用方法,这样就可以实现了,委托的介绍在这里:http://msdn.microsoft.com/zh-cn/library/ms173171(VS.80).aspx
闲话少叙,把示例代码先贴出来:
delegate void DelegateName(MyEmail myEmail);
2 public class MainClass
3 public class MyEmail
37DelegateName dn = new DelegateName(SendEmail);
2//或者
3 DelegateName dn = SendEmail;
这样,就可以调用委托中提供的异步方法BeginInvoke来执行异步发送邮件.BeginInvoke的参数中AsyncResult callback是异步执行完成后调用的方法,
在调用的方法中一般要执行一下EndInvoke(IAsyncResult iar),一定要执行这个,不然的话据说后果很严重.
参数Object o是可以传入DelegateName的一个实例,指的是在当前线程上执行,也可传入null
对委托理解不是很深,不妥之处万望指教,谢谢
越来越多的用户在网站购买了东西,每成功订下一个定单,就要向用户的邮箱发送一封EMAIL。当邮件正在发送时,占用的资源会非常多,用户也需要等待,用户越多,这样用户页面上的等待时间就会变得很长,为了解决这个问题,决定把发送EMAIL和短信的都改成异步执行的。
异步发送邮件,有两种做法;一种是大家在网上一搜就能找到一堆的发送方法,这种方法都是在发送email的时候再进行异步操作,如这篇文章(http://blog.csdn.net/liuduoqing/archive/2007/12/19/1952934.aspx)中写到的。
但是这种方法在我这里需要的成本太高,因为发送邮件的方法是封装好的,不便更改,所以只能从调用这个方法上想办法,在这里我找到了委托,可以异步调用方法,这样就可以实现了,委托的介绍在这里:http://msdn.microsoft.com/zh-cn/library/ms173171(VS.80).aspx
闲话少叙,把示例代码先贴出来:
delegate void DelegateName(MyEmail myEmail);
2 public class MainClass
3 public class MyEmail
37DelegateName dn = new DelegateName(SendEmail);
2//或者
3 DelegateName dn = SendEmail;
这样,就可以调用委托中提供的异步方法BeginInvoke来执行异步发送邮件.BeginInvoke的参数中AsyncResult callback是异步执行完成后调用的方法,
在调用的方法中一般要执行一下EndInvoke(IAsyncResult iar),一定要执行这个,不然的话据说后果很严重.
参数Object o是可以传入DelegateName的一个实例,指的是在当前线程上执行,也可传入null
对委托理解不是很深,不妥之处万望指教,谢谢
相关文章推荐
- 利用委托异步发送邮件
- 利用Spring框架封装的JavaMail实现同步或异步邮件发送 分享
- 利用Spring框架封装的JavaMail实现同步或异步邮件发送
- 利用Spring框架封装的JavaMail现实同步或异步邮件发送
- 利用Spring框架封装的JavaMail现实同步或异步邮件发送
- 利用Spring框架封装的JavaMail实现同步或异步邮件发送
- 邮件发送 异步委托调用-VB.Net
- 利用Spring框架封装的JavaMail现实同步或异步邮件发送
- 利用Spring框架封装的JavaMail现实同步或异步邮件发送
- C# 利用SMTP异步发送邮件
- 利用Spring框架封装的JavaMail现实同步或异步邮件发送
- 利用SmtpClient异步地发送邮件
- 利用 .NET 发送 Hotmail 邮件(XMLHTTP,但测试无法通过)
- JAVA 利用spring的JavaMailSenderImpl工具包发送邮件
- PHP下利用PHPMailer配合QQ邮箱下的域名邮箱发送邮件(转)
- 利用SQL Server 2005数据库邮件发送电子邮件
- 利用CDO实现邮件阅读或发送回执功能 For .Net
- Java-利用spring发送邮件
- c#利用委托进行异步跨线程加载到窗体数据
- 利用URLSchemes功能通过邮件发送“游戏关卡”的解决方案(转)