我想知道System.Net.SmtpClient的SendAsync()方法内部实现的内部实现,是使用ThreadPool的Thread还是只使用当前的同步上下文??
在这个答案中,据说它使用了线程池的线程,但是当我查看 System.dll 的反编译代码时,它没有使用任何线程池(或者我可能不理解代码)。
我只是想知道这一点,因为我在发送批量电子邮件时遇到了困难,使用 SendAsync 方法或仅使用 ThreadPool.QueueUserWorkItem 中的 Send() 方法...
我想知道System.Net.SmtpClient的SendAsync()方法内部实现的内部实现,是使用ThreadPool的Thread还是只使用当前的同步上下文??
在这个答案中,据说它使用了线程池的线程,但是当我查看 System.dll 的反编译代码时,它没有使用任何线程池(或者我可能不理解代码)。
我只是想知道这一点,因为我在发送批量电子邮件时遇到了困难,使用 SendAsync 方法或仅使用 ThreadPool.QueueUserWorkItem 中的 Send() 方法...
发送电子邮件有两种异步方法,尽管“较新”的方法只是调用“较旧”的方法。两者都不使用 ThreadPool 但两者都是异步的。
async/await显然,除非您使用TaskCompletionSource包装它,否则您不能使用它。await。在这两种情况下,执行都是异步的,因为您自己的线程在 SendAsync 完成之前不会阻塞。另一方面,每个客户端不能运行多个发送操作,无论是同步的还是异步的。
您最好的选择是为您要发送的每条消息或每批消息创建一个新客户端,并使用“SendMailAsync”发送每条消息以利用await