Die Frage fasst es ziemlich gut zusammen. Ich habe einen WCF-Dienst und möchte warten, bis er fertig ist, um etwas anderes zu tun, aber es muss warten, bis er fertig ist. Mein Code sieht ungefähr so aus. Danke!
private void RequestGeoCoordinateFromAddress(string address)
{
GeocodeRequest geocodeRequest = new GeocodeRequest();
GeocodeServiceClient geocodeService = new GeocodeServiceClient("BasicHttpBinding_IGeocodeService");
geocodeService.GeocodeCompleted += new EventHandler(geocodeService_GeocodeCompleted);
// Mach die Geocode-Anfrage
geocodeService.GeocodeAsync(geocodeRequest);
//if (geocodeResponse.Results.Length > 0)
// results = String.Format("Breitengrad: {0}\nLängengrad: {1}",
// geocodeResponse.Results[0].Locations[0].Latitude,
// geocodeResponse.Results[0].Locations[0].Longitude);
//else
// results = "Keine Ergebnisse gefunden";
// Warte hier auf das Ende der Anfrage, um etwas anderes tun zu können
// DoSomethingElse();
}
private void geocodeService_GeocodeCompleted(object sender, GeocodeCompletedEventArgs e)
{
bool isErrorNull = e.Error == null;
Exception error = e.Error;
try
{
double altitude = e.Result.Results[0].Locations[0].Latitude;
double longitude = e.Result.Results[0].Locations[0].Longitude;
SetMapLocation(new GeoCoordinate(altitude, longitude));
}
catch (Exception ex)
{
// TODO: Grund später entfernen
MessageBox.Show("Adresse nicht gefunden. Grund: " + ex.Message);
}
}