Il est asynchrone, mais il est recommandé de ne pas effectuer de traitement non trivial à l'aide de WebClient car ce travail sera effectué sur le thread de l'interface utilisateur comme Indy le signale à juste titre. Webclient fait cela pour vous offrir la commodité de ne pas avoir à appeler Dispatcher.
Dispatcher.BeginInvoke(() => { /* ui update code */ });
Cela vient au prix de tous vos traitement dans le rappel en cours d'exécution sur le thread d'interface utilisateur. HttpWebRequest (utilisé par WebClient lui-même) vous permettra de garder la plus grande partie de votre traitement hors de l'UI thread et de simplement faire vos mises à jour UI sur le thread UI par l'intermédiaire de Dispatcher (voir ci-dessus).
Notez que vous pouvez toujours bloquer le thread UI si vous faites cela avec trop d'intensité. L'espacement de vos mises à jour de l'interface utilisateur avec Thread.Sleep (xxx) aidera à garder l'interface utilisateur responsable dans de tels cas.
Pour une compréhension plus approfondie des différences entre HttpWebRequest et WebClient et un exemple de projet de travail à démontrer, consultez mon article ici.
WebClient, HttpWebRequest and the UI Thread on Windows Phone 7
Malheureusement, les événements INotifyPropertyChanged ne sont pas envoyés au thread d'interface utilisateur –