The callback of asynchronous operations is not in the correct thread to access UI controls. Here’s the trick (in C#):
Get the code here: http://www.codepaste.net/6gm1zy
There’s not a lot to it. Handle the Completed event (I use an anonymous method, but a standard method works). The UI-oriented code is in an anonymous Action. When you Invoke() the Action, it executes the the correct context to access the UI.