Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Разъясните ситуацию [D6, WinXP]


Махно ©   (2010-02-24 10:29:00) 

Удалено модератором
Примечание: Делай нормальные заголовки, на в потрепаться же


Медвежонок Пятачок   (2010-02-24 11:46:00) [1]

может ли он разрывать выполнение работы основного потока.

Нет, не может.
Что дальше?


Медвежонок Пятачок   (2010-02-24 11:44:00) [2]

Содержимое списка может меняться еще в нескольких местах.

Предлагаешь лечить по фотографии без самой фотографии?
Зачем здесь твой "схематичный код"?
Чтобы мы угадали что у тебя ошибка в неприведенной сдесь семнадцатой строке?


Медвежонок Пятачок   (2010-02-24 11:42:00) [3]

Содержимое списка может меняться еще в нескольких местах.

Какая разница?

Я сюда написал не потому, что у меня сложный код

Странно что вообще у такого тру-программера есть проблемы.
Он же наперед знает, что поможет, а что не поможет.

К чему тогда вопросы?


Махно   (2010-02-24 11:37:00) [4]

Содержимое списка может меняться еще в нескольких местах.

В чем и суть, что обработчик по таймеру общий для всех изменений. Тут юзер добавил, там удалил, тут из потока изменения произошли, тут по времени пора список подправить и т.д. Все изменения хранятся в списке, если по таймеру на данных момент содержимое списка не соответствует нужному - он модифицируется. Такой подход меня устраивает, т.к. в каждом случае понятно что происходит.

Я сюда написал не потому, что у меня сложный код, а потому, чтобы разобраться, с обработчиком потока - может ли он разрывать выполнение работы основного потока. Смотря в код вызова OnTerminated я этого не понял.


Медвежонок Пятачок   (2010-02-24 11:22:00) [5]

Думаю, что AV получается не из-за того, что используется таймер.

А я сказал что ав у тебя из за таймера?
У тебя спагетти - код, поймать ошибку в котором сложно.
Упрощай код.


Махно   (2010-02-24 11:20:00) [6]

Использовать таймер или не использовать - дело второе. Должно работать как с таймером так и без него. Сейчас я не могу понять, почему получается AV. Думаю, что AV получается не из-за того, что используется таймер.


Медвежонок Пятачок   (2010-02-24 11:20:00) [7]

твоя архиполезная работа начинается только после ифа.
иф проверяет значение поля.
поле модифицируется только в OnThreadTerminate и нигде больше.

И зачем здесь таймер? /* см. [3] */


Махно   (2010-02-24 11:18:00) [8]

Содержимое в обработчиках разное, каждый делает свое дело.
Таймер удобен тем, что мне нужно (например) за 5 секунд до определенного момента сделать со списком определенную манипуляцию. Как мне это делать без таймера?


Медвежонок Пятачок   (2010-02-24 11:07:00) [9]

место для твоего ифа - это метод OnThreadTerminate


Медвежонок Пятачок   (2010-02-24 11:05:00) [10]

т.к. проверку надо делать регулярно

зачем ее делать регулярно?
у тебя переменные в листе модифицирует святой дух?
нет.
их можифицируют нитки.
они пусть и сигнализируют что пора делать иф


Медвежонок Пятачок   (2010-02-24 11:03:00) [11]

ты когда складываешь два и два, то тоже вешаешь таймер, чтобы поймать момент, когда результат сложения уже готов?


Махно   (2010-02-24 10:58:00) [12]

Критическая секция не поможет, т.к. обработчики работают в одном потоке.

А таймер самая удобная в этом случае вещь, т.к. проверку надо делать регулярно, через определенный промежуток времени.


Медвежонок Пятачок   (2010-02-24 10:56:00) [13]

1. добавить критическую секцию
2. убрать таймер.


Наверх

Титульная страница Поиск, карта сайта Написать письмо