locked
Асинхронные запросы RRS feed

  • Вопрос

  • 	

    ManualResetEvent downloading = new ManualResetEvent(false);

    private void getContent() { string addr = App.wpServer + catalog; // некий адрес HttpWebRequest request = (HttpWebRequest)WebRequest.Create(addr); request.BeginGetResponse(EndGetResponseCallback, request); } private void EndGetResponseCallback(IAsyncResult result) { try { HttpWebRequest request = result.AsyncState as HttpWebRequest; HttpWebResponse response = request.EndGetResponse(result) as HttpWebResponse; ... downloading.Set();//Разрешаем потоку продолжать работу } catch (Exception) { ... } } private void Downloading(){ while (true) { downloading.Reset(); ... downloading.WaitOne(); ... } }


    В общем в данном цикле идет рекурсивный обход веб сервера по каталогам и сбор всех файлов в массив. Но после того как мы ставим поток в ожидание собственно обратный вызов асинхронного метода в
    request.BeginGetResponse(EndGetResponseCallback, request); просто навсего не срабатывает он просто виснет(ожидает) и все... Как правильно реализовать?
    • Изменено grinay 29 июля 2012 г. 11:52
    29 июля 2012 г. 11:51

Ответы

  • Решил.. Засунул вызов самого Downloading в отдельный поток...
    Thread dl = new Thread(Downloading) ;
    dl.Start();



    • Изменено grinay 29 июля 2012 г. 14:28
    • Предложено в качестве ответа PetrishkoMVP 29 июля 2012 г. 17:11
    • Помечено в качестве ответа PetrishkoMVP 29 июля 2012 г. 17:11
    29 июля 2012 г. 14:28