得到一個無效函數,將數據保存到數據庫,一旦數據被保存我正試圖調用一個函數,它將發送推送通知,它應該是運行的async但它沒有。我究竟做錯了什麼?在void C中調用一個異步方法#
public void Save(MyModel m)
{
using (var conn = Databases.DB)
{
var d = new DynamicParameters(new
{
m.Name
});
conn.Execute("INTRANET__CreateTicket", d, commandType: CommandType.StoredProcedure);
//send push notifications
Task.Run(() => SendRaisedTicketNotifications(m));
}
}
private async void SendRaisedTicketNotifications(NewAmbercatTicketView t)
{
await Task.Run(() =>
{
//Send push notifications
var sub = new Subscritption();
var people = UserRepository.List();
foreach (var person in people)
foreach (var sub in UserPushRepository.List().Where(x => x.PersonId == person.PersonId && x.Subscribed))
{
var notification = new PushNotification("Some content")
notification.SendPushNotification(sub);
}
});
}
'async void'是一種不好的做法。使用'異步任務'而不是 –
出現兩次的'Task.Run'應該已經響起了警鐘。我也想知道爲什麼SendRaisedTicketNotifications看起來完全不依賴於它的參數。 –
你究竟想在這裏發生什麼?你只是試圖同步調用方法,或者你想將它作爲後臺任務來運行嗎?我不確定你知道異步實際意味着什麼。 – DavidG