【发布时间】:2013-08-24 03:52:56
【问题描述】:
我正在关注 this tutorial,使用 SendGrid 从我的 Azure Web 角色发送电子邮件。
这是教程中的相关部分:
// Create credentials, specifying your user name and password.
var credentials = new NetworkCredential("username", "password");
// Create an REST transport for sending email.
var transportREST = REST.GetInstance(credentials);
// Send the email.
transportREST.Deliver(myMessage);
在我看来transportREST.Deliver 函数是同步的。由于它正在执行 IO,我更喜欢使用新的 .NET 4.5 async, await 代替(我的所有其他代码都是完全异步的)。这可能吗?是否有用于 SendGrid 的异步 API 或某种包装现有调用的方法?
【问题讨论】:
-
“或某种方式来包装现有的调用”你不能包装同步方法使其异步。
-
@svick 我知道,但是如果我为阻塞位生成一个新线程并在其上异步,这可能会好一些,并释放我的服务器线程池以异步处理其他客户端.. 是这比阻塞好?或者可能有一些工作线程在发送这些阻塞电子邮件并添加到它的队列中..
-
不,实际上这无济于事。线程是相对重量级的,只为这个操作创建一个线程可能会使你的性能变差。最好感谢阻塞,因为它正在阻塞。
标签: c# azure async-await sendgrid