Ich habe eine Void-Funktion, die Daten in der Datenbank speichert, sobald die Daten gespeichert wurden Ich versuche, eine Funktion zu rufen, die Push-Benachrichtigungen senden soll und async ausgeführt werden soll aber es tut es nicht. Was mache ich falsch?Aufruf einer asynchronen Methode in 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' ist eine schlechte Übung. Verwenden Sie 'async Task' anstelle von –
' Task.Run', der zweimal erscheint, sollte bereits Alarmglocken läuten. Ich frage mich auch, warum 'SendRaisedTicketNotifications' nicht von seinem Parameter abhängig zu sein scheint. –
Was willst du eigentlich hier? Versuchen Sie nur, die Methode synchron aufzurufen oder möchten Sie sie als Hintergrundaufgabe ausführen? Ich bin mir nicht sicher, ob Sie wissen, was Async eigentlich bedeutet. – DavidG