簡體   English   中英

多次調用異步函數會發生什么

[英]What happens when calling an async function multiple times

我有一個在 C# 中編輯數據庫的異步函數

public async Task DeleteEntry(int Id)
{
    var toDeleteEntry = (await firebase
      .Child("Entries")
      .OnceAsync<Entry>()).Where(a => a.Object.id == Id).FirstOrDefault();
    await firebase.Child("Entries").Child(toDeleteEntry.Key).DeleteAsync();
}

如果我在沒有等待函數的情況下在循環中調用此函數(在下面注釋掉)

foreach (Entry entry in allData)
{
     var task = DeleteEntry(entry.id);
     //task.Wait();
}

會不會:

  1. 出錯?
  2. 為每個任務創建一個新線程?
  3. 只創建 1 個線程並阻塞,直到該線程在下一次迭代循環時完成?

請解釋。

不拋出任何異常。 它的工作是同步的,首先是函數調用,然后移動到下一個迭代。

如果你想在 Thread 中運行然后使用

public async Task DeleteEntry(int Id)
{ 
    var toDeleteEntry = (await firebase
    .Child("Entries")
    .OnceAsync<Entry>()).Where(a => a.Object.id == Id).FirstOrDefault();
    await firebase.Child("Entries").Child(toDeleteEntry.Key).DeleteAsync();

 }

想要與任務一起運行然后使用此代碼。 它的執行方法 Parallels 線程

 var task = Task.Run(() => DeleteEntry(entry.id));

暫無
暫無

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

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