|
Почетный модератор
5851 / 2862 / 392
Регистрация: 01.11.2011
Сообщений: 6,906
|
||||||
Поток подвешивает форму02.07.2012, 16:27. Показов 3379. Ответов 29
Метки нет (Все метки)
Господа, что-то я явно делаю не правильно, а что никак не пойму.
В основной форме, по кнопке создаю поток
Добавлено через 34 минуты И если я одновременно создам два таких потока, то они должны выполняться параллельно. В этом их и суть. А не ждать пока завершится первый.
0
|
||||||
| 02.07.2012, 16:27 | |
|
Ответы с готовыми решениями:
29
Как в С++ Builder из 2х потоков рисовать на форме квадратики(это первый поток рисует) и кружочки (2ой поток)) Запрос к БД подвешивает форму dataCridView "подвешивает" форму |
|
Почетный модератор
5851 / 2862 / 392
Регистрация: 01.11.2011
Сообщений: 6,906
|
|
| 03.07.2012, 16:58 [ТС] | |
|
Avazart, может быть действительно у меня где-то корявый алгоритм, но я вон приводил в примере, что при выполнении первого потока при движении лейбла вправо, если запустить второй поток, то второй лейбл уползет на лишние 200 пикселей далее. А если не запускать первый поток, то не уползает. Зависимость на лицо.
И это только один из примеров. Я замечал и другие странности, которые конечно очень легко объяснить просто отсутствием синхронизации, но только вот непонятно, что с этим делать.
0
|
|
|
|
||||||
| 03.07.2012, 18:45 | ||||||
|
Ну так должно быть.Непойму что не устраивает.
Каждый поток сдвигает лэбел на 200 вот тебе 200+200 Добавлено через 1 час 41 минуту Например код
Лэйбел плавно двигается по диагонали вниз-вправо.
0
|
||||||
|
Почетный модератор
5851 / 2862 / 392
Регистрация: 01.11.2011
Сообщений: 6,906
|
|||||||
| 06.07.2012, 09:03 [ТС] | |||||||
|
Только у меня там два разных лейбла двигаются:
0
|
|||||||
|
|
||||||
| 06.07.2012, 20:52 | ||||||
|
Нормально работает...
0
|
||||||
|
Почетный модератор
5851 / 2862 / 392
Регистрация: 01.11.2011
Сообщений: 6,906
|
|
| 10.07.2012, 13:32 [ТС] | |
|
Уважаемый Avazart... не знаю даже с чего начать. В общем из-за тех глюков, которые я у себя наблюдал, мне показалось, что наиболее правильным решением будет переписать все в один поток. Так как один поток обращается к одной же форме и делить ее ни с кем не надо. Но в результате, из-за огромного количества всевозможных проверок и действий, поток так разросся, что оптимизировать его уже не представляется возможным. Как следствие жутчайшие тормоза.
Вся разница в приведенном вами метода и тем, что пытался изобразить я, лишь в том, что в методе Execute потока у меня выполняется одна синхронизированная функция, содержащая проверки условий и прочее, а у вас сама проверка происходит непосредственно в теле метода Execute, а действия с формами в отдельных (нескольких!) функциях. Имеет ли мне смысл переписывать свою программу обратно под многопоточность (именно как вы предложили) или я получу тоже самое? Или хз?
0
|
|
|
|
|
| 10.07.2012, 15:08 | |
|
Да какая разница, сколько потоков будут эти две метки двигать? Хоть десятью можно, так-то.
![]() Чтоб много не менять, сделай так, чтобы за одну итерацию цикла потока обе метки сдвигались на единичку. Собственно, и все.
0
|
|
|
Почетный модератор
5851 / 2862 / 392
Регистрация: 01.11.2011
Сообщений: 6,906
|
||
| 11.07.2012, 12:15 [ТС] | ||
|
Да не. Там не две метки. )) Это просто пример был. Но как выяснилось даже в нем я накосячил. И всего лишь надо было разнести по функциям действия с разными объектами (хотя я до сих пор не понимаю почему это сработало). В моей программе присутствуют такие тяжеловесные конструкции как перебор всех элементов формы, парсеры их имен и запихивание/считывание всего этого дела в структуры. Да и еще парочка потоков рядом постоянно пытаются на себя переманить ресурсы. Повыкидывал откуда смог Form->Update, - стало получше, объекты перемещаются не с такими тормозами, но зато стали самопроизвольно телепортироваться.
Вот я и думаю, мож если б переписать как я хотел изначально, но с учетом вашего варианта исполнения, то мож заработало б как планировалось.Добавлено через 39 секунд Avazart, так, ладно. А как бы вы сделали? Добавлено через 19 часов 13 минут
0
|
||
|
Почетный модератор
5851 / 2862 / 392
Регистрация: 01.11.2011
Сообщений: 6,906
|
|
| 12.07.2012, 10:49 [ТС] | |
|
Спасибо, добрый человек.
0
|
|
| 12.07.2012, 10:49 | |
|
Поток фризует форму
Как правильно создать отдельный поток и из него изменять форму? Через CreateThread в поток передать указатель на форму или ее элемент Как можно поместить форму, на которой происходят определенные действия, в поток? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
| Опции темы | |
|
|
Новые блоги и статьи
|
|||
|
Калькулятор для расчета родства
russiannick 07.08.2026
1. Задача: Создать калькулятор для расчета родства.
Родственных связей существует 8 ступеней, такие как:
p - отец
P - мать
q - муж
Q - жена
b - брат
B - сестра
s - сын
S - дочь
|
Мир по моей воле
kumehtar 07.08.2026
Когда-то кажется, что всё просто. Ты весь такой светлый. Причиняешь добро. Борешься за справедливость в этом тёмном мире.
Потом начинаешь замечать одну неприятную вещь. Почти каждый хороший. . .
|
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С.
Задача:
Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
|
У нас сейчас поговорку "Опять 25" нужно переделать на "Опять +35".
kumehtar 04.08.2026
С ностальгией вспоминаю времена моего детства, когда у нас и правда +25 - была максимальная температура летом. Раньше +25 °C реально казались вершиной жары, когда можно было весь день пропадать на. . .
|
|
Как ИИ начал спорить и врать (возможно почуяв опасность для себя от индустрии - уход от электроники).
Hrethgir 04.08.2026
Недельный диалог, на фоне событий с НПЗ. Да, из спирта можно получать бензин, и это не сложно. Но потом в схеме я решил избавиться от насоса, при этом полностью сделав контроль подачи спирта в. . .
|
Термопринтер QR701
Argus19 03.08.2026
Термопринтер QR701
Купил два термопринтера QR701.
На сэлф-тесте написано:
Language: PC936 (GB18030).
Что означает, что принтеры могут печатать только латиницу и китайские иероглифы. Так же. . .
|
Создание формы заимствованного документа
Maks 03.08.2026
Задача:
Необходимо создать собственную форму заимствованного документа. На форме должен быть реквизит "Покупатель", а также
табличная часть со следующими реквизитами:
- Расчетный счет покупателя. . .
|
Задача предоставления скидок покупателям
Maks 03.08.2026
Задача:
В документе "Продажи" необходимо реализовать функционал предоставления скидок покупателям. Скидка должна автоматически рассчитываться и подставляться в соответствующее поле при выборе. . .
|