Как сделать паузу в цикле?

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by geve, 13 Apr 2011.

Thread Status:
Not open for further replies.
  1. geve

    geve New Member

    Joined:
    20 Mar 2011
    Messages:
    17
    Likes Received:
    0
    Reputations:
    0
    Есть цикл отправки запросов на сервер но если в ответе от сервера приходит капча нужно этот цикл приостановить до разгадывания капчи и продолжить цикл кнопкой отправки ответа капчиа как это реализовать?
     
  2. HakaR

    HakaR Active Member

    Joined:
    23 Jul 2009
    Messages:
    301
    Likes Received:
    200
    Reputations:
    3
    Формошлепы совсем совесть потеряли.
    Гугл тебе в помощь.
     
  3. Jingo Bo

    Jingo Bo Member

    Joined:
    25 Oct 2009
    Messages:
    368
    Likes Received:
    51
    Reputations:
    7
    geve гугли "Синхронизация События" Тут как раз подойдет.
     
  4. GhostOnline

    GhostOnline Active Member

    Joined:
    20 Dec 2008
    Messages:
    723
    Likes Received:
    110
    Reputations:
    22
    Я не понел что капча в другом потоке разгадывается? Или вообще в асинхронном режиме?
    да в любом ЯПе можно вызывать коллбеки же...
     
  5. Jingo Bo

    Jingo Bo Member

    Joined:
    25 Oct 2009
    Messages:
    368
    Likes Received:
    51
    Reputations:
    7
    Почему бы и нет, была у меня подобная задача, там просто ставилась каптча в очередь и другой поток их разгадывал, остальные ждали когда их каптча разгадается, коллбеки здесь не подойдут, т.к. нужно цикл приостановить. Если я понял суть задачи.
     
  6. geve

    geve New Member

    Joined:
    20 Mar 2011
    Messages:
    17
    Likes Received:
    0
    Reputations:
    0
    делается без дополнительный потоков.А что без них не обойтись?
     
  7. GhostOnline

    GhostOnline Active Member

    Joined:
    20 Dec 2008
    Messages:
    723
    Likes Received:
    110
    Reputations:
    22
    Ну тут смешение асинхронного и синхронного режимов налицо.
    тут ты прав - переписать все под асинхронный режим на коллбеках ТС точно не осилит :)

    тогда, примерно это можно описать так:

    while (captchacode == "")
    {
    Sleep(1000);
    }

    а разгадывающий поток при разгадывании вызывает как раз таки коллбек, где устанавливает captchacode :)
     
  8. tim-oleksii

    tim-oleksii Member

    Joined:
    14 Mar 2011
    Messages:
    199
    Likes Received:
    10
    Reputations:
    0
    WaitForSingleObject юзай. Передай дескриптор потока и цикл приостановится до тех пор, пока поток не разгадает капчу или не умрет.
     
  9. geve

    geve New Member

    Joined:
    20 Mar 2011
    Messages:
    17
    Likes Received:
    0
    Reputations:
    0
    Примера нету?
     
  10. X-rus

    X-rus Member

    Joined:
    22 Dec 2010
    Messages:
    88
    Likes Received:
    22
    Reputations:
    4
  11. tim-oleksii

    tim-oleksii Member

    Joined:
    14 Mar 2011
    Messages:
    199
    Likes Received:
    10
    Reputations:
    0
    MSDN поиск по функции CreateThread. Там ссылка на пример с этой функцией.
     
  12. geve

    geve New Member

    Joined:
    20 Mar 2011
    Messages:
    17
    Likes Received:
    0
    Reputations:
    0
    Вот я сделал отображение капчи в дополнительном потоке если в ответе капча то этот поток запускается как дальше хз
     
  13. geve

    geve New Member

    Joined:
    20 Mar 2011
    Messages:
    17
    Likes Received:
    0
    Reputations:
    0
    Теперь как сделать что если поток запущен чтобы цикл приостанавливался а кнопкой отправки ответа капчи продолжался
     
  14. rudi

    rudi Active Member

    Joined:
    3 Jun 2010
    Messages:
    492
    Likes Received:
    186
    Reputations:
    5
    например тут Edit поле для ввода капчи
    и капча состоит из 5 символов тогда пишем так

    while(true)
    {
    Sleep(50);
    if(strlen(Edit->Text.c_str()) > 4)
    break;
    }
     
    #14 rudi, 13 Apr 2011
    Last edited: 13 Apr 2011
  15. Gar|k

    Gar|k Moderator

    Joined:
    20 Mar 2009
    Messages:
    1,166
    Likes Received:
    266
    Reputations:
    82
    rudi ух трындец говнокод
     
    _________________________
  16. waik

    waik Elder - Старейшина

    Joined:
    2 Nov 2008
    Messages:
    405
    Likes Received:
    163
    Reputations:
    12
    rudi ты садист!
    If length(edit1.text) <> 0 then bla-bla
     
    #16 waik, 13 Apr 2011
    Last edited: 13 Apr 2011
  17. geve

    geve New Member

    Joined:
    20 Mar 2011
    Messages:
    17
    Likes Received:
    0
    Reputations:
    0
    Да блин мнебы паузу реализовать слееп неподходит
     
  18. waik

    waik Elder - Старейшина

    Joined:
    2 Nov 2008
    Messages:
    405
    Likes Received:
    163
    Reputations:
    12
    Дык запросы на твой сервер в отдельном потоке идут и капча в отдельном потоке разгадывается?
    Как у тебя вообще код работает?
     
  19. geve

    geve New Member

    Joined:
    20 Mar 2011
    Messages:
    17
    Likes Received:
    0
    Reputations:
    0
    Пока некак сачс вручную хотелосьбы цикл ваобще идут запросы до появления капчи если капча то запускается дополнительный поток в котором эта капча отображается
     
  20. kosmo987

    kosmo987 Member

    Joined:
    28 Apr 2010
    Messages:
    0
    Likes Received:
    6
    Reputations:
    1
    так делай в одном потоке,зачем в отдельном капчу показывать?
    и сделай в цикле слип,пока кнопка не нажата.
     
Thread Status:
Not open for further replies.