簡體   English   中英

沒有等待語句的C#異步任務

[英]c# async task with no await statement

我只是從c#開發開始,我一直都在為異步編程而苦惱,我對異步執行任務有疑問。

我有自己的服務,能夠發送電子郵件(不進行詳細說明,但可以正常工作),並且我希望該方法的執行異步運行,我一直在閱讀有關異步和等待的msdn文檔。

我確實想異步發送它,但是我不在乎結果,我的意思是我不想指定await語句。 當我從文檔中閱讀時,我正打算嘗試一下

如果async方法未使用await運算符標記暫停點,則盡管使用了async修飾符,該方法仍將與同步方法一樣執行。

所以我會懷疑,是嗎? 有沒有一種方法可以實現我想要的目標,或者這樣做是一種不好的想法/想法。 我希望我能說清楚。 謝謝

關於您在文檔中閱讀的內容,請這樣考慮:

public async Task OuterMethod()
{
    InnerMethod();
}

您已將OuterMethod標記為async ,但是您沒有等待任何操作。 文檔只是說OuterMethod將同步運行,您也可以將其標記為void而不是async Task 但是,OuterMethod同步運行的事實並不會改變InnerMethod的性質; 它很可能是異步的,如果您不等待它,它將運行即忘即棄的樣式,很可能在后台線程上運行。

在您的特定情況下,InnerMethod將是發送電子郵件的方法。 如果您確定不關心發送電子郵件是成功還是失敗,我建議您不等待就調用SmtpClient.SendAsync

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM