我正在使用SendGrid(基於雲的SMTP服務)從web api項目發送電子郵件。我希望我的應用程序等待/阻止(比如說30秒),直到SendGrid響應之後纔將響應返回給客戶端,而不是立即返回。 SendGrid庫有一個返回Task的DeliverAsync方法。如何等待第三方庫中的異步方法 - web api
我一直在看我如何等待任務。
我已經閱讀了無數篇關於如何做到這一點的文章,並瞭解如果它是我自己的代碼,我會在任務上使用ConfigureAwait(false)來防止死鎖並讓我等待。這裏的問題是代碼不是我的!它看起來不像SendGrid有一個同步發送方法。
我沒有異步控制器連線,但欣賞這將是一種方法來做到這一點,但我想知道是否有另一種方式我可以做到這一點。
希望這是有道理的!
如果您在Web APi中使用第三方庫 - 那麼您可以使用'await',並且控制器只有在任務完成後纔會返回。 – Fabio
如果在代碼中使用await關鍵字沒有意義,可以添加「.GetAwaiter()。GetResult();」到異步SendGrid調用的結尾,它將等待異步函數完成。 – Kyle
在ASP中:NET Web API異步方法用於更有效的線程使用。在WPF或Winforms中,異步方法將在任務完成時爲其他操作釋放UI線程,從而使UI「響應」「非阻塞」UI線程。 – Fabio