|
14 / 14 / 2
Регистрация: 18.07.2012
Сообщений: 79
|
|
Зависание потоков при обращени к ListBox27.08.2012, 08:54. Показов 1719. Ответов 13
Метки нет (Все метки)
Столкнулся со следующей проблемой. Есть основная форма приложения. Есть рабочие потоки. В качестве логера им передается адрес ListBox'a на основной форме. При входе в поток и выходе из него в лог вносятся соответсвующие записи (при этом разумеется используются критические секции). Так вот если пытаться корректно завершить работу потока передачей ему соответсвующего флага и ждать его через WaitForSingleObject() то программа попросту виснет. Дебаг показал что происходит это это при входе в pListBox->Items->Add(). Если эту строчку убрать все работает как часы. Есть ли соображения по этому поводу? Да, заранее всем спасибо...
0
|
|
| 27.08.2012, 08:54 | |
|
Ответы с готовыми решениями:
13
Как при обращени в адресной строке через id сменить стиль? Зависание потоков, утечка памяти |
|
|
|
| 28.08.2012, 01:29 | |
|
0
|
|
|
6 / 6 / 0
Регистрация: 11.04.2011
Сообщений: 130
|
|
| 28.08.2012, 05:12 | |
|
из потока нельзя обращаться на прямую к VCL, поэтому и висяки
0
|
|
|
14 / 14 / 2
Регистрация: 18.07.2012
Сообщений: 79
|
|
| 28.08.2012, 05:34 [ТС] | |
|
[QUOTE=Avazart;3395273]Используй класс TThread
А чем плох обычный вызов CreateThread? TThread ведь просто обертка...
0
|
|
|
|
|
| 28.08.2012, 18:17 | |
|
Насколько можно судить по справочным описаниям, TWinControl вводит свойства и методы для работы именно с визуальными элементами, которые предоставляет операционка. Это его основное отличие от предков.
А откуда знаешь, что синхронизация нужна только для потомков TWinControl, а не для всех объектов VCL?
0
|
|
|
|
|
| 28.08.2012, 18:34 | |
|
Да, TControl вводит функционал для работы с некими визуальными компонентами, однако там нет и намека на работу с оконными элементами операционки.
Еще вопрос, что Архангельский под этим подразумевает...
0
|
|
|
Супер-модератор
|
|
| 28.08.2012, 18:41 | |
|
Синхронизация нужна для non thread-safe объектов. TControl еще является потокобезопасным. И, соответственно, его наследники, если написаны правильно, могут быть потокобезопасны (тогда с ними можно работать без Synchronize).
А вот TWinControl уже сам не thread-safe, то есть, все его потомки по определению не могут быть безопасны => только с синхронизацией.
0
|
|
|
|
|||||||
| 28.08.2012, 18:52 | |||||||
|
Коментарии при создании наследника TThread
Но я имел ввиду, то что все визуальные компонеты могуть "заняты" для обрабатки событий в основном потоке например при передвежении курсора над компонентом или при разворачиивании окна и его перерисовке. Но это не значит что обычные объекты VCL не нужно синхронизировать, просто вероятно, что можно это делать другими способами например через критические секции.
0
|
|||||||
|
|
|
| 28.08.2012, 20:11 | |
|
Короче, если суммировать, то Synchronize() требуется только для объектов, которые могут быть заняты в случайное время без ведома программиста - в результате активности операционки по большей части. Вся VCL под это определение, в принципе, подпадает.
0
|
|
|
|
||
| 28.08.2012, 23:25 | ||
Тут нужно смотреть по общей картине...
0
|
||
| 28.08.2012, 23:25 | |
|
Помогаю со студенческими работами здесь
14
Зависание потоков. Работа с файлами Выдача информации в 4 listbox из 4 потоков Возможно ли при выборе через opendialog заносить в ListBox имена файлов, а при чтении из ListBox получать путь к файлам? Доступ к элементам управления (DGW, ListBox) из потоков При выделении строки в ListBox отображать ее в Edit, где можно отредактировать и заменить в ListBox-е Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. .
Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
|
Контроль уникальности заводского номера - вариант №2
Maks 24.03.2026
В отличие от предыдущего варианта добавлено прерывание циклов, также добавлены новые переменные для сохранения контекста ошибки перед прерыванием цикла:
Процедура ПередЗаписью(Отказ, РежимЗаписи,. . .
|
SDL3 для Desktop (MinGW): Вывод текста со шрифтом TTF с помощью библиотеки SDL3_ttf на Си и C++
8Observer8 24.03.2026
Содержание блога
Финальные проекты на Си и на C++:
finish-text-sdl3-c. zip
finish-text-sdl3-cpp. zip
|
Жизнь в неопределённости
kumehtar 23.03.2026
Жизнь — это постоянное существование в неопределённости. Например, даже если у тебя есть список дел, невозможно дойти до точки, где всё окончательно завершено и больше ничего не осталось. В принципе,. . .
|
|
Модель здравоСохранения: работники работают быстрее после её введения.
anaschu 23.03.2026
geJalZw1fLo
Корпорация до введения программа здравоохранения имела много невыполненных работниками заданий, после введения программы количество заданий выросло.
Но на выплатах по больничным это. . .
|
Контроль уникальности заводского номера - вариант №1
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере документа выдачи шин для спецтехники с табличной частью. Данные берутся из регистра сведений, по которому настроено. . .
|
Хочу заставить корпорации вкладываться в здоровье сотрудников: делаю мат модель здравосохранения
anaschu 22.03.2026
e7EYtONaj8Y
Z4Tv2zpXVVo
https:/ / github. com/ shumilovas/ med2. git
|
Программный отбор элементов справочника по группе
Maks 22.03.2026
Установка программного отбора элементов справочника "Номенклатура" из модуля формы документа.
В качестве фильтра для отбора справочника служит группа номенклатуры.
Отбор по наименованию группы. . .
|