You're seeing the classic deadlock situation that I describe on my blog.
To solve it, use async
all the way, as I describe in my MSDN article on async
best practices.
This can be difficult in some scenarios. I have a blog post describing a few approaches for async
constructors. However, since you're talking about a ViewModel and data for the UI, you'll probably find my blog post on async
properties more helpful - in particular, the section on data binding.