0
在docs它說:Gets or sets a value that specifies the amount of time after which a synchronous Send call times out.
SmtpClient.Timeout屬性是否適用於異步調用?
這難道不是異步調用工作?有時我的電話正在服用的時間太長了,我需要爲他們最大超時。我如何通過異步實現這一目標?
在docs它說:Gets or sets a value that specifies the amount of time after which a synchronous Send call times out.
SmtpClient.Timeout屬性是否適用於異步調用?
這難道不是異步調用工作?有時我的電話正在服用的時間太長了,我需要爲他們最大超時。我如何通過異步實現這一目標?
通常,這可以通過CancellationTokenSource
來實現,並且在施工時延遲交付。但是,似乎基於任務的SendMailAsync
不支持取消,但確實有可用於終止異步發送的方法(SendAsyncCancel
)。你可以結合這一點到期CancellationTokenSource
:
async Task Send()
{
using(SmtpClient c = new SmtpClient())
using(var cts = new CancellationTokenSource(30000))
{
cts.Token.Register(() => c.SendAsyncCancel());
await c.SendMailAsync("[email protected]","[email protected]","foo","bar");
}
}
非常感謝你! – Baconbeastnz