Async file uploading in Silverlight with callback

In one of the projects I'm working on we needed a way to upload an file to a server and update other things once it's uploaded and processed, however the async nature of Silverlight makes it a bit hard. The OpenWrite method on the WebClient works fine for uploading but it doesn't allow us to wait for the response in the same call. So this is what i came up with (I haven't upgraded to Silverlight 3, so it's only tested on Silverlight 2). I've declared an Action<bool> passed into the method that will hold the callback method, simple signature with a bool parameter to indicate success. What I've found was that UploadString offers the ablity to both post data and read the response, that allows us to post data, process it in page_load and then output a response (simple "OK" || "FAIL"). The downside of this approach is that we post a string so depending on what you upload you might need to base64 encode the content to avoid random problems with binary data. A bit of code to complete the post, it's downsized from it's original form and not supposed to work with cut & paste coding. :)
private Action<bool> CompleteAction;

public void UploadFileWithCallBack(string PostUrl, Stream data, Action<bool> completeAction)
{
   try
   {
      CompleteAction = completeAction;
      Uri uri = new Uri(Util.HostName, PostUrl);
      UploadFileWithCallBack(uri, data);
   }
   catch (Exception) { }
}

private void UploadFileWithCallBack(Uri uri, Stream data)
{
   WebClient c = new WebClient();
   StreamReader sr =new StreamReader(data);
   string uploadString = sr.ReadToEnd();
   c.UploadStringCompleted += UploadFileWithCallBackCompleted;
   c.UploadStringAsync(uri, "POST", uploadString);
}

void UploadFileWithCallBackCompleted(object sender, UploadStringCompletedEventArgs e)
{
   try
   {
      CompleteAction(true);
   }
   catch (Exception)
   {
      CompleteAction(false);
   }
}