Мы настраиваем Push-уведомления для нашего приложения. Теперь мы создаем консольное приложение, которое будет определять, к каким пользователям отправлять, а затем отправлять их указанным пользователям. Что не очевидно для нас на данный момент, так это то, как мы знаем, когда каждый из них завершен? Или не закончил? Существует не так много документации, предоставляемой Microsoft (большой сюрприз там), и всякая документация там не объясняет, как читать ответы.Azure Notification Hub Отправка тысяч уведомлений и получение результатов от каждого
Например, приведен пример фрагмента того, что, по нашему мнению, нам нужно реализовать, поскольку мы могли бы получать тысячи людей, получающих уведомление за один раз, мы хотели бы, чтобы они запускали параллельный, а не блокирующий интерфейс.
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);
}
Это имеет смысл для нас, мы используем метод WhenAll
для выполнения всех задач на parralel потоков. Но тогда есть ли способ узнать, что происходит с КАЖДОЙ задачей, которая запускается? Например, метод ContinueWith
, похоже, делает то, что мы хотим, кроме думаю, что это будет работать только после завершения всех задач, а не после каждого (пожалуйста, поправьте меня, если я ошибаюсь).
Итак, есть ли способ прочитать каждый ответ звонка WhenAll
? Если нет, есть ли лучший способ сделать то, что мы пытаемся сделать? Я поставлю любую другую необходимую информацию, пожалуйста, просто спросите.