2015-06-24 41 views
0

我剛剛開始使用c#開發,而且我一直在使用異步編程,我對異步執行任務有疑問。c#異步任務沒有等待語句

我有我自己的服務能夠發送電子郵件(不進入細節,但它的工作),我希望該方法的執行異步運行,我一直在閱讀有關異步和等待msdn文檔。

我確實想異步發送它,但我不在乎結果,我的意思是我不想指定await語句。當我從文檔中讀取時,我即將試用它

如果異步方法不使用await運算符標記暫停點,則儘管使用了異步修飾符,但該方法仍以同步方法執行。

所以毫不懷疑會是這樣嗎?有沒有一種方法可以實現我正在尋找的東西,或者在做這樣的事情時是一種糟糕的事情/想法。我希望我讓自己清楚。由於

+1

'Task.Run(()=> MethodToFireAndForget());' –

+1

對於ASP.NET,請參閱http://stackoverflow.com/q/18502745 –

+0

http://stackoverflow.com/questions/1018610/simplest三通對-DO-A-發射後不管法,在-C/1018630#1018630 – Will

回答

0

關於你的文檔讀什麼,想一想這樣:

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

你標記OuterMethod async,但你沒有做任何等待。文檔只是說OuterMethod將同步運行,您也可以用void而不是async Task來標記它。但是,OuterMethod同步運行的事實不會改變InnerMethod的性質;它可能是異步的,如果你不在等待它,它將會運行一個難忘的風格,很可能在後臺線程中運行。

在您的具體情況下,InnerMethod將是發送電子郵件的方法。如果您確定您不在乎發送電子郵件是成功還是失敗,我建議您不用等待就致電。