使用SMTP是否明智?asp.net中的SendAsync
本文关键字:asp net 中的 SendAsync SMTP 是否 使用 | 更新日期: 2023-09-27 18:16:46
我正在编写一个代码,将2个代码发送到2个不同的电子邮件(检查这两个电子邮件的所有者是同一个人)。我得到了错误:
系统。InvalidOperationException:异步调用已经在进行中。它必须在调用此方法之前完成或取消。
我可以简单地避免在发送第一封邮件后发送第二封邮件的错误,但问题是,如果有这么多用户同时请求发送邮件(忘记密码、更改邮件、注册等),会造成问题吗?或者只有当它们在同一页面上重复执行时才会出现此错误?
提前感谢,
Ashkan
SendAsync方法的目的不是阻塞调用线程;但是,您必须等待SendAsync方法完成,然后才能在同一个SmtpClient实例上发送新电子邮件。换句话说,创建2个实例,每个实例对应一个电子邮件,如果需要,可以异步发送它们。
从MSDN:调用SendAsync后,必须等待电子邮件传输到在尝试使用send发送另一封电子邮件之前完成非同步。
正如Icarus指出的那样,您必须等待SendAsync
完成后才能在同一实例上调用它。除此之外,有可能出现ThreadPool
饥饿,但是您的里程将根据您的实现而有所不同。在内部,SendMailAsync
使用ThreadPool
线程执行任务。如果它只是一个电子邮件,我不会担心。
否单独的实例不会成为问题。如果许多用户同时发送请求,它们将是不同的实例。