title: WebClient.OpenReadCompleted - how to wait for this event to finish
body: <p>So basiacally, I'm creating a dll project which have to get some info from the bing maps api. Below I'm pasting a method which is resposible for getting and serializing the response:</p>
  
  <pre><code>private void GetResponse(Uri uri, Action&lt;Response&gt; callback)
      {
          WebClient wc = new WebClient();
          wc.OpenReadCompleted += (o, a) =&gt;
          {
              if (callback != null)
              {
                  DataContractJsonSerializer responseSerializer = new DataContractJsonSerializer(typeof(Response));
                  callback(responseSerializer.ReadObject(a.Result) as Response);
              }
          };
          wc.OpenReadAsync(uri);
      }
  </code></pre>
  
  <p>Below method is using GetResponse method to get lattitudes:</p>
  
  <pre><code>public Lattitudes getLattitudes()
      {
          Lattitudes lattitudes = new Lattitudes();
          GetResponse(geocodeRequestURI, (x) =&gt;
          {
              lattitudes.SouthLatitude = x.ResourceSets[0].Resources[0].BoundingBox[0];
              lattitudes.SouthLatitude = x.ResourceSets[0].Resources[0].BoundingBox[1];
              lattitudes.SouthLatitude = x.ResourceSets[0].Resources[0].BoundingBox[2];
              lattitudes.SouthLatitude = x.ResourceSets[0].Resources[0].BoundingBox[3];
          });
          return lattitudes;
      } 
  </code></pre>
  
  <p>My problem is that second method is returning empty object and part inside GetResponse method is being executed later. Is There a way to wait for this event to finish and then return, or maybe I need to redesign it ?(max version of .NET I can use is 4.0)</p>