Я пытаюсь использовать Async CTP для создания единой функции, которая запускает async и возвращает значение.Async HTTP Post данные в одной функции с использованием Async CTP
вот мой пример кода. Я не знаю, почему он не заполняет переменную «resp» при возврате.
Также я пробовал это, но программа зависала (ничего не делайте не только на время). возможно, любая коррекция может помочь.
public async Task<string> sendRequest(string url, string postdata)
{
string resp = "";
WebClient client = new WebClient();
byte[] data = Encoding.UTF8.GetBytes(postdata);
Uri uri = new Uri(url);
data = await TaskEx.Run(()=>client.UploadData(uri,"POST", data));
return System.Text.Encoding.UTF8.GetString(data);
}
Вы подписываетесь на мероприятие после загрузки. Это означает, что у вас есть состояние гонки. – CodesInChaos
Две расы на самом деле - одна @CodeInChaos упоминает, а затем ваш последний 'ожидание' ждет, пока вы * не подписаны * на мероприятие, - но не гарантирует, что это событие действительно произошло. –