Я бы добавил потокобезопасное поле в ваше окно WPF, чтобы отслеживать количество клиентских обновлений, поставленных пользователем в очередь:
private int recordsQueued = 0;
Перед отправкой отдельных асинхронных операций, установите для recordsQueued значение someCollection.Count.
recordsQueued = someCollection.Count;
Наконец, в client_UpdateRecordsCompleted, уменьшить количество записейQueued; если он равен нулю, отобразить сообщение «Обновление завершено»:
private void client_UpdateRecordsCompleted(AsyncCompletedEventArgs args) {
if (Interlocked.Decrement(ref recordsQueued) == 0)
MessageBox.Show("Update complete.");
}