Что именно должен делать ваш метод?
На данный момент похоже, что вы вызываете какой-то метод в цикле, и после этого вы спите потоком. Если ваш loadDownloadData
вызывает WCF, он будет вызываться в каждом цикле? Если он не запускает асинхронную обработку, он будет ждать завершения метода и только после этого продолжит спать поток.
Если вы хотите иметь индикатор выполнения для загрузки контента через WCF, вы не можете использовать такой подход. Сначала весь вызов WCF должен выполняться асинхронно. Далее вам нужно заранее знать количество загруженных данных и вам нужно постоянно читать данные - только это позволит вам контролировать реальный индикатор выполнения. Обычная обработка HTTP записывает все данные на сервер, передает их в сеть, загружает все данные в буфер на клиенте и после этого ваш метод возвращает результат - из клиентского API такая операция является атомарной (= вы не можете измерить прогресс). Этого обычно избегают с помощью фрагментированных данных, когда сервер помещает данные в фрагменты, и клиент может читать эти фрагменты как поток. В WCF это выполняется в режиме потоковой передачи.
В данный момент вы должны просто использовать неограниченный счетчик и дождаться завершения операции.