Защита программы от сбоев.

Тема в разделе "WASM.BEGINNERS", создана пользователем TOLSTOPUZ, 11 июл 2008.

  1. TOLSTOPUZ

    TOLSTOPUZ New Member

    Публикаций:
    0
    Регистрация:
    26 апр 2008
    Сообщения:
    509
    Оконное приложение.

    .code

    @1
    invoke CreateWindow ; на окне появляется битмап
    invoke DestroyWindow ; Уничтожаем рисунок
    jmp @1

    Вопрос об глупости кода опустим.
    Короче, я запускаю программу. Программа работает когда 1 минуту, когда 5 минут, когда несколько секунд. Но результат один - форма внезапно пустеет, исчезают все контролы что есть
    заголовок формы ("Программа не отвечает"...)

    Почему такое? Что делать?
    Пробовал cli \ sti
    но что-то не получается эту структурку втыкнуть,
    масм ругается...
     
  2. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    каким образом?
    а почему не clc/stc?
    какую?
    скорее всего не освобождаешь ресурсы.
     
  3. satrau

    satrau Александр

    Публикаций:
    0
    Регистрация:
    5 янв 2008
    Сообщения:
    229
    а ольга что говорит? или ты с ней не знаком?
     
  4. DEEP

    DEEP Андрей

    Публикаций:
    0
    Регистрация:
    27 апр 2008
    Сообщения:
    491
    Адрес:
    г. Владимир
    TOLSTOPUZ
    Выполнение потока команд, отрисовывающего битмап в данном случае "перетягивает одеяло" процессорного времени на себя, фактически тормозя поток оконной процедуры, настолько что он не может даже обрабатывать приходящие окну сообщения (отсюда и "программа не отвечает", и исчезновение контролов - их, кроме оконной процедуры, некому перерисовать). Ибо "битмапный" поток грузит ЦП на все 100%.

    Наверняка то, что ты хочешь сделать, вполне реализуемо и менее зверскими способами =)
    Тык вот, внимание вопрос: в чём состоит цель выполнения кода из [1]?
    Мигание картинки? Если да, то ИМХО надо юзать таймеры.
     
  5. TOLSTOPUZ

    TOLSTOPUZ New Member

    Публикаций:
    0
    Регистрация:
    26 апр 2008
    Сообщения:
    509
    Не понял...
    Нет, блин, это уже интересно...
     
  6. TOLSTOPUZ

    TOLSTOPUZ New Member

    Публикаций:
    0
    Регистрация:
    26 апр 2008
    Сообщения:
    509
    Цель вот в чём: как всегда пытаюсь своими руками сделать уже сделанное. В данном случае это прогресс бар состоящий из рисунка, (довольно приличного размера в кб) который скачет по шкале, с каждым шагом меняя коордмнату ( inc EDX)
    Вот, собственно.
    Работает, работает, а потом бац...
     
  7. DEEP

    DEEP Андрей

    Публикаций:
    0
    Регистрация:
    27 апр 2008
    Сообщения:
    491
    Адрес:
    г. Владимир
    TOLSTOPUZ
    Ну дык, сделай в обработчике WM_PAINT того самого окна-прогрессбара единовременную отрисовку текущей позиции битмапа. А при изменении таковой посылай окну InvalidateRect, чтобы изменения на нём отобразились.

    Олька = OllyDBG, 32-bit analyzing debugger ©
     
  8. TOLSTOPUZ

    TOLSTOPUZ New Member

    Публикаций:
    0
    Регистрация:
    26 апр 2008
    Сообщения:
    509
    ШУТНИКИ, БЛИН!!!!
    Ну Вы даёте... Рядом со мной лежит девушка Ольга, и тут мессага "А что типа Ольга говорит"?
    Я уж хотел шторы задвинуть!!!
     
  9. DEEP

    DEEP Андрей

    Публикаций:
    0
    Регистрация:
    27 апр 2008
    Сообщения:
    491
    Адрес:
    г. Владимир
    TOLSTOPUZ
    11 кагбе Чаке следит за табой!!111 адин адин
    %)
    ну так что там насчёт отрисовки непосредственно при приходе запроса на таковую? (а не каждую миллисекунду, насильственно ;P)
     
  10. TOLSTOPUZ

    TOLSTOPUZ New Member

    Публикаций:
    0
    Регистрация:
    26 апр 2008
    Сообщения:
    509
    Да пока ещё не смотрел. Я за другим компом сижу. Рабочий у меня ессно не имеет доступа наружу.
     
  11. 2FED

    2FED New Member

    Публикаций:
    0
    Регистрация:
    20 фев 2008
    Сообщения:
    1.002
    Юзай msctls_progress32 и купи себе учебник по ассемблеру+win32 =) и воабще я так понял у тебя выход из цикла не предусмотрен чтоли?
     
  12. TOLSTOPUZ

    TOLSTOPUZ New Member

    Публикаций:
    0
    Регистрация:
    26 апр 2008
    Сообщения:
    509
    Да нет, предусмотрен.
    паралельно идёт фоновая обработка некого файла. Так вот, когда обработка заканчивается, то состояние окна восстанавливается.
    Только этот прогресс-бар у меня глючный получается.

    Учебничек по асму купить надо конечно. Не поверите, но всё об ассемблере я черпаю только тут и своими собственными руками и головой.
    С учебником. думаю, было бы проще. Недавно после многочисленых добрых и ласковых пожеланий форумчан "почитать мсдн" взял русский перевод, почитал... Боже мой - как всё оказалось просто и решаемо.
    А вот с учебником - нет ничего в магазине. есть про ДОС, а нафиг мне это? Не посоветуете название хорошей книги для вин-32?
     
  13. 2FED

    2FED New Member

    Публикаций:
    0
    Регистрация:
    20 фев 2008
    Сообщения:
    1.002
  14. zhindos

    zhindos New Member

    Публикаций:
    0
    Регистрация:
    10 июл 2008
    Сообщения:
    142
    TOLSTOPUZ

    Вполне возможно, что проблемы из-за накопления большого числа объектов GDI(битмапов)(> 10000 на один процесс нельзя).