C# 为什么可以';您是否使用同一个SmtpClient实例异步发送多封电子邮件?

C# 为什么可以';您是否使用同一个SmtpClient实例异步发送多封电子邮件?,c#,smtpclient,system.net.mail,sendasync,C#,Smtpclient,System.net.mail,Sendasync,锡罐上的内容。根据: 调用SendAsync后,必须等待 用于将电子邮件传输到 在尝试发送之前完成 另一封使用“发送”或“发送”的电子邮件 SendAsync 因此,您可以重用同一实例,但必须等待发送第一封邮件。根据on-SmtpClient,SendAsync的唯一目的是允许当前线程继续处理,而不是等待传输处理。SendAsync的目的不是允许您一次发送多条消息,而是允许您在发送消息时继续处理。SendAsync和Send都使用相同的管道,SendAsync只允许您在发送消息时执行其他操作。是

锡罐上的内容。

根据:

调用SendAsync后,必须等待 用于将电子邮件传输到 在尝试发送之前完成 另一封使用“发送”或“发送”的电子邮件 SendAsync


因此,您可以重用同一实例,但必须等待发送第一封邮件。

根据on-SmtpClient,SendAsync的唯一目的是允许当前线程继续处理,而不是等待传输处理。SendAsync的目的不是允许您一次发送多条消息,而是允许您在发送消息时继续处理。SendAsync和Send都使用相同的管道,SendAsync只允许您在发送消息时执行其他操作。

是的,但这不是违背了SendAsync的全部目的吗?你不妨打电话给Send。我的意思是SendAsnyc不应该将每条消息排队,并在资源可用时发送?如果你想并行发送电子邮件,你需要不同的实例。可能这是因为
SmtpClient
类的设计方式……您所做的只是重申了这个问题,并同意它是事实。我认为我的问题实际上是关于SmtpClient是如何设计的。从技术上讲,如果你有1000封电子邮件要发送,这意味着你需要创建1000个SmtpClient,它们的配置基本相同……对我来说似乎有点浪费。@詹姆斯:不,异步意味着你的主线程可以自由地做其他事情,比如准备下一封邮件。这并不意味着SendAsync是可重入的。那么,如果您希望一次发送多封电子邮件,同时仍能捕获回调,那么最好的解决方法是什么呢?正在创建多个SmtpClient实例?决定将接受的答案更改为此实例。其他答案回答了我的基本问题,然而,这个答案实际上解决了最初的问题。