The Discussion

Thanks for the exmple on how to use WebClient and asynchronous operations from the client. I do however have a question re: this. The web client seems like a great tool by which to use to get media from a site and allow a user to download. however, with
the save dialog box doesn't allow itself to be invoked from a non-user initiated event, which contradicts the async approach.

Any recomendations on how to work around this without having to prompt a user multiple times?

I seem to remember having problems trying to write to this kind of FileStream from a background thread but I'm not sure if I've seen a particular issue doing 1-5 above ( although I haven't gone off and explicitly written the code to test it yet ).

Not sure what you mean - WebClient does have support for credentials. Off the top of my head - if you're on the Browser stack then it'll on use default credentials but if you're on the Client stack it can either use default/prompt or take supplied credentials
based on the UseDefaultCredentials property.