次のような方法があります。
public decimal GetExchangeRate(string fromCurrency, string toCurrency)
{
GoogleCurrencyService googleCurrencyService = new GoogleCurrencyService();
return googleCurrencyService.GetRateForCurrency(fromCurrency, toCurrency);
}
そして次のような別のクラス
public class GoogleCurrencyService
{
public decimal GetRateForCurrency(string fromCurrency, string toCurrency)
{
try
{
WebClient client = new WebClient();
client.DownloadStringCompleted += new DownloadStringCompletedEventHandler(StringDownloadCompleted);
client.DownloadStringAsync(new Uri(_requestUri + fromCurrency + "=?" + toCurrency));
}
catch (Exception)
{
ExchangeRate = 0;
}
return ExchangeRate;
}
private void StringDownloadCompleted(object sender, DownloadStringCompletedEventArgs e)
{
_response = e.Result;
ExchangeRate = ParseResponseAndGetExchangeRate();
}
}//class GoogleCurrencyService
変数 ExchangeRate は常にゼロになるため、非同期コールバックが呼び出される前に関数呼び出し "GetRateForCurrency" が返されると思います。返される前に変数 ExchangeRate を設定する必要があるため、それが起こらないようにするにはどうすればよいですか。ありがとう。また、コールバックにはブレークポイントがあり、例外も呼び出されないため、コールバックが呼び出されないことに気付きました。だから私はどこに問題があるのか わかりません。