[英]Async method not calling
調用awaitMethod()
不打印的第二個電話console.printline
在GetFilmCount()
也不會在最后print語句awaitMethod()
被調用。 唯一的輸出是第一次調用GetFilmCount()時的Console.printLine()
()。
我在這里做錯什么了嗎? 無法弄清楚其行為為何如此?
public async void awaitMethod()
{
int count1 = await GetFilmCount(1);
int count2 = await GetFilmCount(2);
Console.WriteLine("Number of films {0}, {1} ", count1,count2 );
}
public async Task<int> GetFilmCount(int count)
{
Console.WriteLine("Count {0} ", count);
using (MySqlConnection connection = new MySqlConnection(connectionString))
{
connection.Open();
MySqlCommand cmd = new MySqlCommand("select sleep(5) ; select count(*) from sakila.film", connection);
return await cmd.ExecuteScalarAsync().ContinueWith(t => {
return Convert.ToInt32(t.Result);
});
}
}
除非它是UI事件處理程序,否則不應該使用async void
(似乎不是這種情況)。
這里可能發生的情況是,您沒有等待awaitMethod
完成(您不能等待,因為它是一個void
方法),因此您的控制台應用程序在其余代碼有機會執行之前就結束了。
請改用async Task
並await
(如果位於Main
則調用Wait()
)返回返回的Task
:
public async Task awaitMethod()
{
int count1 = await GetFilmCount(1);
int count2 = await GetFilmCount(2);
Console.WriteLine("Number of films {0}, {1} ", count1,count2 );
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.