我有這樣一個同步函式:
我有這樣一個同步函式。
void AddItem(Item item)
{
_context.Items.Add(item)。
_context.SaveChanges()。
}
和異步函式 :
async Task AddItemAsync(Item item)
{
_context.Items.Add(item)。
await _context.SaveChangesAsync()。
這些函式有什么區別嗎?我的專案中有很多類似的函式,只是獲取一個物件的實體,在資料庫中進行CRUD并回傳結果。我需要將我的函式定義為異步的嗎?我看到一個視頻說,異步編程要好得多。我知道如果我有一個阻塞性呼叫和一些獨立的作業,最好使用異步編程。但在這里呢?我必須說,在視頻中他選擇了使用代碼塊第二。
我是否從代碼塊2中獲得優勢?
編輯:
我知道async/await的模式和它的用法。我的問題是,這兩個函式有類似的行為(不在執行緒池中),但在這個特定的場景中,代碼塊2是否有任何優勢?uj5u.com熱心網友回復:
當 "SaveChangesAsync() "真正啟動一個新的任務時(即用Task.Run()),代碼塊2是異步的。 但是這個任務可能是在UI執行緒(主行程執行緒)中運行的,當他此刻是空閑的。 這就是為什么你沒有看到使用的執行緒池執行緒。
所以代碼塊2不會阻塞呼叫者(呼叫執行緒)并立即回傳。
謝謝你
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/318034.html
標籤:
