я следующий кодManualResetEvent.WaitOne блокирует все нити
ThreadPool.QueueUserWorkItem(new WaitCallback(DownloadAsync), apiMethod);
downloadHandle.WaitOne();
Где DownloadAsync является
private void DownloadAsync(object _uri)
{
var url = _uri as string;
WebClient client = new WebClient();
client.DownloadStringCompleted += new DownloadStringCompletedEventHandler(client_DownloadStringCompleted);
client.DownloadStringAsync(new Uri(GLOBALS.MAIN_API_URL + url, UriKind.Absolute));
}
void client_DownloadStringCompleted(object sender, DownloadStringCompletedEventArgs e)
{
result = e.Result;
downloadHandle.Set();
}
Так что моя проблема в том, что downloadHandle.Set() никогда не вызывается. Но я не понимаю, почему? Я создаю новый поток для DownloadAsync и downloadHandle.WaitOne() не должен его блокировать.
Мне нужно создать метод синхронизации вместо Async.
Спасибо!
UPD: Обновлен исходный код с вызовом Async.
От какого потока вызывается ваш код 'downloadHandle.WaitOne'? Пользовательский интерфейс? –