Мой метод uriRead, кажется, возвращается до завершения асинхронной загрузки, в результате чего возвращается «» методом. Если я поставлю Thread.Sleep (5000) в «// Wait here?» однако он будет завершен.Метод C#, возвращаемый перед обработчиком события, называется
Как я могу заставить эту функцию дождаться завершения загрузки строки и вернуть ее, как только это произойдет, без ввода статической задержки?
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);
}
Умм .. вы действительно знаете, что означает асинхронный? Почему это асинхронно, если вы просто собираетесь его ждать? –
http://msdn.microsoft.com/en-us/library/system.net.webclient.downloadstring.aspx Нет Async – Joe
Вы пытаетесь написать приложение для Windows 8? – dlev