我們正在爲我們的應用程序設置推送通知。我們正在創建一個控制檯應用程序,該應用程序現在將確定要發送給哪些用戶,然後將其發送給所述用戶。在這一點上我們不明顯的是,我們怎麼知道每一個什麼時候完成的?還是沒有完成?微軟沒有提供很多文檔(那裏有很大的驚喜),而且任何文檔都沒有真正解釋如何閱讀響應。Azure通知中心發送數千個通知並獲取每個通知的結果
例如,下面是我們認爲需要實現的示例片段,因爲我們可能有數千人同時收到通知,我們希望它們能夠並行運行而不會阻止用戶界面。
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
調用的每個響應?如果不是,是否有更好的方法來做我們正在嘗試做的事情?我會提供任何其他所需的信息,請問。