非同期ダウンロードが完了する前に uriRead メソッドが返されたように見えるため、メソッドによって "" が返されます。「// Wait here?」に Thread.Sleep(5000) を配置すると、ただし、行は完了します。
文字列のダウンロードが完了するのを待って、静的な遅延を入力せずにすぐに戻るようにこの関数を作成するにはどうすればよいですか?
public string uriRead(string uri)
{
string result = "";
WebClient client = new WebClient();
client.Credentials = CredentialCache.DefaultCredentials;
client.DownloadStringCompleted += new DownloadStringCompletedEventHandler(AsyncReadCompleted);
client.DownloadStringAsync(new Uri(uri));
// Wait here?
return result = downloadedAsyncText;
}
public void AsyncReadCompleted(object sender, DownloadStringCompletedEventArgs e)
{
Console.WriteLine("Event Called");
downloadedAsyncText = e.Result.ToString();
Console.WriteLine(e.Result);
}