Wir richten Push-Benachrichtigungen für unsere App ein. Wir erstellen jetzt eine Konsolenanwendung, die bestimmt, an welche Benutzer gesendet werden soll, und sendet sie dann an diese Benutzer. Was ist für uns an diesem Punkt nicht offensichtlich, woher wissen wir, wann jeder von ihnen fertig war? Oder nicht abgeschlossen? Es gibt nicht viel Dokumentation von Microsoft (große Überraschung dort) und die Dokumentation, die es gibt, erklärt nicht wirklich, wie man die Antworten liest. Zum Beispiel ist hier ein Beispielausschnitt, von dem wir meinen, dass wir ihn implementieren müssen, da Tausende von Personen gleichzeitig eine Benachrichtigung erhalten könnten. Wir möchten, dass sie parallel laufen und die Benutzeroberfläche nicht blockieren.Azure Notification Hub Senden von Tausenden von Benachrichtigungen und Erhalten von Ergebnissen von jedem
public async Task GenerateNotifications()
{
NotificationHubClient hub = NotificationHubClient.CreateClientFromConnectionString(AppHelper.AzureNotificationHubConnectionString, "myhub");
List<Task<NotificationOutcome>> notificaitonTasks = new List<Task<NotificationOutcome>>();
for (int i = 0; i < 10; i++)
{
var notification = new
{
aps = new
{
alert = string.Format("Awesome Notification {0}", i),
sound = "default"
}
};
string notificationJSON = JsonConvert.SerializeObject(notification);
notificaitonTasks.Add(hub.SendAppleNativeNotificationAsync(notificationJSON, "mytag"));
}
await Task.WhenAll(notificaitonTasks);
}
Das macht uns Sinn, verwenden wir die WhenAll
Methode, um alle Aufgaben auf parralel Threads auszuführen. Aber gibt es eine Möglichkeit zu wissen, was mit JEDER Aufgabe passiert, die ausgeführt wird? Zum Beispiel scheint die ContinueWith
Methode zu tun, was wir wollen, außer wir denken, dass dies nur ausgeführt wird, nachdem alle Aufgaben abgeschlossen sind, und nicht nach jedem (bitte korrigieren Sie mich, wenn ich falsch liege).
Also, gibt es eine Möglichkeit, jede Antwort eines WhenAll
Aufrufs zu lesen? Wenn nein, gibt es einen besseren Weg zu tun, was wir zu tun versuchen? Ich werde alle anderen benötigten Informationen liefern, bitte einfach fragen.