Как Оживить Зависшее Окно?

Тема в разделе "Lotus - Программирование", создана пользователем motogarri, 1 авг 2013.

  1. motogarri

    motogarri Well-Known Member

    Регистрация:
    17 фев 2010
    Сообщения:
    188
    Симпатии:
    4
    Здравствуйте.
    Была похожая тема http://codeby.net/forum/threads/12447.html?hl...%E3%F0%E5%F1%F1 , но там решение, как я понял так и не было найдено.

    В клиенте R5 работает долгий цикл по поиску и обработке документов. Пишу прогресс в статус-бар и в NEMProgressBar. Где-то на половине цикла окно лотуса виснет и до окончания не отвечает. Прогресс не пишется ни в статус-бар ни в прогресс-бар.
    Пробовал ставить Sleep, Yield - не помогает, хотя как понял Слип должен был и помочь.
    Пробовал WinApi; InvalidateRect, UpdateWindow. Тоже никакого эффекта.

    Подскажите, как решить проблему.
     
  2. savl

    savl Lotus team
    Lotus team

    Регистрация:
    28 окт 2011
    Сообщения:
    2.051
    Симпатии:
    146
    Вот это артефакт... И меня еще называют консерватором... -_-

    Есть предположение, что либо не обновляется счетчик (какой-нибудь переход), либо зацикливается.
    Результат выдается или "мертвый клиент"?
    По коду верно все там?

    P.S. Может клиент все же обновить до 7ки (хотя бы) и переделать поиск?
     
  3. motogarri

    motogarri Well-Known Member

    Регистрация:
    17 фев 2010
    Сообщения:
    188
    Симпатии:
    4
    Не, не зацикливается, нормально отрабатывает и выдает результат. Но на время работы зависает намертво. Даже статус-бар. Обновиться пока не светит ((
    На Р5 даже во время репликации, когда в основном потоке идет, так же окно виснет, но там понятно ничего не поделаешь. А тут в цикле какую-нибудь команду бы вставить. Вот только знать бы какую.
     
  4. ToxaRat

    ToxaRat Чёрный маг
    Lotus team

    Регистрация:
    6 ноя 2007
    Сообщения:
    3.046
    Симпатии:
    18
    может в реестре винды поискать таймаут для программ, которые она(винда) считает зависшими
    типа время ожидания или как-то там
     
  5. rinsk

    rinsk Lotus team
    Lotus team

    Регистрация:
    12 ноя 2009
    Сообщения:
    795
    Симпатии:
    78
    Эт у него в ДНК так - пока идет работа агента на клиенте - оно замирает.
    Лучше всего поставить 6.х - там агентов можно запускать в фоновом режиме на клиенте...
     
  6. motogarri

    motogarri Well-Known Member

    Регистрация:
    17 фев 2010
    Сообщения:
    188
    Симпатии:
    4
    Ну, видимо придётся смириться пока.
    ToxaRat, я не понял что имеешь ввиду, но покопаю, может и найду что.
     
  7. savl

    savl Lotus team
    Lotus team

    Регистрация:
    28 окт 2011
    Сообщения:
    2.051
    Симпатии:
    146
    garri
    Тоха предлагает выставить в Windows тайм-аут на зависшие приложения.
    Типа, если висит 500 мс -> принудительно закрывать.
    Вот только я не уверен что progress bar будет стартовать как отдельное приложение, как отдельный поток скорее всего.
    Следовательно это может не помочь.

     
  8. motogarri

    motogarri Well-Known Member

    Регистрация:
    17 фев 2010
    Сообщения:
    188
    Симпатии:
    4
    Нет, программа не зависает, она работает, и работает довольно шустро. Не успевает скорее всего окно отрисовываться. Вообще, сложилось впечатление, что Прогрессбар отрабатывает в том же потоке, что и агент. Хотя всегда считал, что они все-таки в разных.
     
  9. savl

    savl Lotus team
    Lotus team

    Регистрация:
    28 окт 2011
    Сообщения:
    2.051
    Симпатии:
    146
    garri
    Я бы отказался от него и заменил либо на простой текст в StatusBar, либо заменил на JavaProgressBar
    Для LN 5.0 to 5.0.13a : JRE/JDK 1.1.8
    Так что теоретически из этой базы может подойти: http://www.nsftools.com/tips/NotesTips.htm#ls2jexamples
     
  10. motogarri

    motogarri Well-Known Member

    Регистрация:
    17 фев 2010
    Сообщения:
    188
    Симпатии:
    4
    Статус-бар так же висит. Спасибо за советы, посмотрю.
     
Загрузка...

Поделиться этой страницей