powered by simpleCommunicator - 2.0.36     © 2025 Programmizd 02
Форумы / Delphi [игнор отключен] [закрыт для гостей] / виснет экранная форма
155 сообщений из 155, показаны все 7 страниц
виснет экранная форма
    #40106064
Mizer73
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
приложение работает, процессы идут (прием/передача данных устройствам, данные в базу данных пишутся).
А вот кнопки на приложении перестают нажиматься, но ...
Иногда их отрисовка пропадает, остаются только надписи

какой диагноз?
...
Рейтинг: 0 / 0
виснет экранная форма
    #40106065
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mizer73,

Диагноз: осуществление тяжёлых операций в основном потоке приложения, мешающее отрисовке и прочему гуёвому функционалу.
...
Рейтинг: 0 / 0
виснет экранная форма
    #40106067
Mizer73
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
softwarer,

процессор при этом грузится на 20-50%.

потом приложение может зависнуть...
...
Рейтинг: 0 / 0
виснет экранная форма
    #40106069
Softologic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Mizer73,

Работу с приемом/передачей данных, равно как и многочисленные взаимодействия с БД можно оформить в потоки. Ну а прогресс этих действий уже передавайте в основной поток.
...
Рейтинг: 0 / 0
виснет экранная форма
    #40106071
Softologic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Можно пойти упрощенным путем, используя Parallel Programming Library (PPL):
http://www.proghouse.ru/programming/36-delphi-xe7-ppl
...
Рейтинг: 0 / 0
виснет экранная форма
    #40106073
northener
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Mizer73
приложение работает, процессы идут (прием/передача данных устройствам, данные в базу данных пишутся).
А вот кнопки на приложении перестают нажиматься, но ...
Иногда их отрисовка пропадает, остаются только надписи

какой диагноз?

Скорее всего вы говорите о потоках, а не о процессах в понимании ОС. И скорее всего в этих потоках слишком многое обёрнуто в Synchronize. А то что обёрнуто в Synchronize выполняется в главном потоке.
Ну а для окончательного диагноза нужно видеть код.
...
Рейтинг: 0 / 0
виснет экранная форма
    #40106087
Mizer73
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Softologic,

так и сделано
...
Рейтинг: 0 / 0
виснет экранная форма
    #40106088
Mizer73
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
northener,

не использую синхронайз
...
Рейтинг: 0 / 0
виснет экранная форма
    #40106089
Mizer73
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Softologic
Можно пойти упрощенным путем, используя Parallel Programming Library (PPL):
http://www.proghouse.ru/programming/36-delphi-xe7-ppl


весьма интересная вещица
...
Рейтинг: 0 / 0
виснет экранная форма
    #40106101
Softologic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Mizer73
northener,

не использую синхронайз

А как сейчас передаете в основную форму инфу? Через Send\PostMessage ?
...
Рейтинг: 0 / 0
виснет экранная форма
    #40106194
Mizer73
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
через глобальные переменные из основной формы
...
Рейтинг: 0 / 0
виснет экранная форма
    #40106226
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mizer73
через глобальные переменные из основной формы

Общение между потоками через глобальные переменные из основной формы?
...
Рейтинг: 0 / 0
виснет экранная форма
    #40106229
Mizer73
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
wadman
Общение между потоками через глобальные переменные из основной формы?

между потоком и основной формой-родителем.
что такого?
да и общение то минимальное. в основном - выдача результата в основную форму
...
Рейтинг: 0 / 0
виснет экранная форма
    #40106234
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mizer73,

Думаю, ошибка всё-таки где-то в твоём секретном коде, который здесь показывать нельзя.
...
Рейтинг: 0 / 0
виснет экранная форма
    #40106247
northener
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Mizer73
wadman
Общение между потоками через глобальные переменные из основной формы?

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

Хотелось бы увидеть пример такой минимальной выдачи результата в основную форму.
...
Рейтинг: 0 / 0
виснет экранная форма
    #40106248
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mizer73

процессор при этом грузится на 20-50%.

процессор? одно ядро, что-ль? Разберитесь с загрузкой ядер вашими threads. Если у вас проц 8ядерный, так 50% загрузки процессора означают полную загрузку 4х ядер (4мя threads).
...
Рейтинг: 0 / 0
виснет экранная форма
    #40106249
northener
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
YuRock
Mizer73,

Думаю, ошибка всё-таки где-то в твоём секретном коде, который здесь показывать нельзя.

+100500
Прием/передачу данных устройствам хотелось бы увидеть.
...
Рейтинг: 0 / 0
виснет экранная форма
    #40106262
s62
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mizer73
через глобальные переменные из основной формы
А как код в основном потоке "узнаёт", что эта переменная изменилась и нужно что-то с ней сделать (отобразить или записать в БД и т.д.)?
...
Рейтинг: 0 / 0
виснет экранная форма
    #40106264
Softologic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
s62
Mizer73
через глобальные переменные из основной формы
А как код в основном потоке "узнаёт", что эта переменная изменилась и нужно что-то с ней сделать (отобразить или записать в БД и т.д.)?

+ 1
...
Рейтинг: 0 / 0
виснет экранная форма
    #40106285
Mizer73
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Softologic,

основному потоку это знать незачем. он , просто, пользуется новыми данными.
...
Рейтинг: 0 / 0
виснет экранная форма
    #40106293
Softologic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Mizer73
Softologic,

основному потоку это знать незачем. он , просто, пользуется новыми данными.

Ну если в контексте задачи это норм, то вопросов нет.
Однако, это не очень корректно с позиции модели бизнес-логики и паттернов проектирования я считаю. Впрочем, в паттернах я новичок и эти мои измышления субъективны :)
...
Рейтинг: 0 / 0
виснет экранная форма
    #40106305
s62
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mizer73
Softologic,

основному потоку это знать незачем. он , просто, пользуется новыми данными.
Можете подробней рассказать?
Из того, что вы написали в начале:
приложение работает, процессы идут (прием/передача данных устройствам, данные в базу данных пишутся). я представляю себе такой процесс: программа или послала запрос устройству, или устройство само прислало данные, эти данные были получены в дополнительном потоке, а потом записаны в глобальные переменные. Если бы дополнительный поток информировал об изменениях, например сообщением, то в обработчике сообщения в основном потоке (в главной форме) можно было бы запустить процедуру отображения новых данных или отправку их в БД.
А если основной поток не получает от дополнительного потока информации, что данные изменились, каком образом в основном потоке запускается отображение новых данных и их отправка в БД? По таймеру что ли, или как?
...
Рейтинг: 0 / 0
виснет экранная форма
    #40106511
Mizer73
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
s62,

у меня это делается так:
есть буфер.
основной поток туда пишет команды, которые должны быть переданы на исполнительное устройство.
поток по очереди эти команды забирает и отправляет на устройство.
так же в основном потоке, так получилось оптимальнее, принимаются ответы и пишутся в буфер ответов.
дополнительный поток получает ответы и меняет состояние логики исполнения процессов.
...
Рейтинг: 0 / 0
виснет экранная форма
    #40106520
northener
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Mizer73
s62,

так же в основном потоке, так получилось оптимальнее, принимаются ответы и пишутся в буфер ответов.

Вот это меня смущает. Работа с устройством наверно ведется в синхронном режиме. Отсюда и завис вырастает.
...
Рейтинг: 0 / 0
виснет экранная форма
    #40106541
vkorshun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я бы посмотрел в сторону использования "блокирующей очереди". В Delphi например имеется IOmniBlockingCollection в библиотеке OmniThreadLibrary. А там уже есть варианты - использовать несколько коллекций или одну или сколько потоков использовать в коллекциях. А основной поток должен получать событие о необходимости перечитать информацию из буфера. Но то же с каким то ограничением что бы не обновлять экран постоянно.
...
Рейтинг: 0 / 0
виснет экранная форма
    #40106766
Mizer73
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
northener
Mizer73
s62,

так же в основном потоке, так получилось оптимальнее, принимаются ответы и пишутся в буфер ответов.

Вот это меня смущает. Работа с устройством наверно ведется в синхронном режиме. Отсюда и завис вырастает.

каким образом?
...
Рейтинг: 0 / 0
виснет экранная форма
    #40106938
L_argo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если работа производится в вашем цикле, то возможно вас спасет старый добрый Application.ProcessMessages :)
...
Рейтинг: 0 / 0
виснет экранная форма
    #40106977
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
L_argo
Если работа производится в вашем цикле, то возможно вас спасет старый добрый Application.ProcessMessages :)

Отличный совет.
...
Рейтинг: 0 / 0
виснет экранная форма
    #40107057
Mizer73
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
L_argo
Если работа производится в вашем цикле, то возможно вас спасет старый добрый Application.ProcessMessages :)


попробовал. не спасает
...
Рейтинг: 0 / 0
виснет экранная форма
    #40107058
s62
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mizer73
northener
пропущено...

Вот это меня смущает. Работа с устройством наверно ведется в синхронном режиме. Отсюда и завис вырастает.

каким образом?
Пока идёт синхронный обмен в основном потоке, интерфейс висит.

>>>Пока идёт синхронный обмен --- выполняется функция чтения (или записи) в синхронном режиме.
...
Рейтинг: 0 / 0
виснет экранная форма
    #40107059
Mizer73
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
northener
Mizer73
s62,

так же в основном потоке, так получилось оптимальнее, принимаются ответы и пишутся в буфер ответов.

Вот это меня смущает. Работа с устройством наверно ведется в синхронном режиме. Отсюда и завис вырастает.

каким образом?
...
Рейтинг: 0 / 0
виснет экранная форма
    #40107062
rgreat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Переведи обмен с устройством в отдельный поток, и интерфейс тормозить не будет.
...
Рейтинг: 0 / 0
виснет экранная форма
    #40107069
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mizer73каким образом?

Синхронные функции не возвращаются до выполнения операции - не работает цикл
выборки сообщений - зависон. Разве это не очевидно?..
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
виснет экранная форма
    #40107117
Mizer73
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
rgreat
Переведи обмен с устройством в отдельный поток, и интерфейс тормозить не будет.

так и сделал.
как раз после этого отдельного потока и начались проблемы.
...
Рейтинг: 0 / 0
виснет экранная форма
    #40107119
Mizer73
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov
Mizer73каким образом?

Синхронные функции не возвращаются до выполнения операции - не работает цикл
выборки сообщений - зависон. Разве это не очевидно?..

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

у меня, как раз, и есть тот случай, когда нигде и ни что не завязано на ожидание результата.
...
Рейтинг: 0 / 0
виснет экранная форма
    #40107121
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть вещи не ждут результата, это по определению асинхронность. Не надо
использовать слова не по назначению, это затрудняет взаимопонимание.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
виснет экранная форма
    #40107127
rgreat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mizer73
rgreat
Переведи обмен с устройством в отдельный поток, и интерфейс тормозить не будет.

так и сделал.
как раз после этого отдельного потока и начались проблемы.

Значит ты криво написал взаимодействие с этим потоком.
...
Рейтинг: 0 / 0
виснет экранная форма
    #40107143
Mizer73
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
rgreat
Mizer73
пропущено...

так и сделал.
как раз после этого отдельного потока и начались проблемы.

Значит ты криво написал взаимодействие с этим потоком.


так нет никакого взаимодействия, кроме общего компонента. и то, из одного компонента ТМемо информация берётся, а в другой ТМемо информация складывается
...
Рейтинг: 0 / 0
виснет экранная форма
    #40107144
Mizer73
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
куда копать то?
почему "внутрянка" не тормозит, а тормозит экран?
ни процессор, ни графика не загружены.
...
Рейтинг: 0 / 0
виснет экранная форма
    #40107153
Zelius
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mizer73,

с ТМемо работа идет напрямую из потока? "код в студию"
...
Рейтинг: 0 / 0
виснет экранная форма
    #40107154
rgreat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mizer73
так нет никакого взаимодействия, кроме общего компонента. и то, из одного компонента ТМемо информация берётся, а в другой ТМемо информация складывается

https://lurkmore.to/Взаимоисключающие_параграфы
...
Рейтинг: 0 / 0
виснет экранная форма
    #40107156
Vizit0r
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TMemo из потока? Это уже начинает радовать.
...
Рейтинг: 0 / 0
виснет экранная форма
    #40107182
Mizer73
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Zelius
с ТМемо работа идет напрямую из потока? "код в студию"

а что тут странного? вот, обычное обращение...

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
if (Ex_Operator->Ardo1IPPort->Connected && Ex_Operator->Ardo1Memo->Lines->Count > 0)
		{
			String jh = Ex_Operator->Ardo1Memo->Lines->Strings[0].Trim();
			Ex_Operator->Shape7->Brush->Color = clYellow;
			Ex_Operator->Shape7->Repaint();
			int y = jh.Pos("/");
			if (y == 0) {
				return;
			}

			int Cmd = StrToInt(jh.SubString(0, y - 1));
			int Cmd2 = StrToInt(jh.SubString(y + 1, jh.Length() - y));
			char OutData[3];
			OutData[0] = Cmd;
			OutData[1] = Cmd2;
			OutData[2] = 0;
			try
			{
				//Sleep(50);
				//Ex_Operator->PingVesy1->PingHost(Ex_Operator->Ardo1IPPort->RemoteHost);
				//Sleep(50);
				Ex_Operator->Ardo1IPPort->SetDataToSend(OutData, 3);
				Sleep(20);
				/*String j1h = Now();
				Ex_Operator->Ardo1Memo2->Lines->Add(j1h + " отправил " + Ex_Operator->Ardo1Memo->Lines->Strings[0]);*/
				Ex_Operator->Shape7->Brush->Color = clGreen;
				Ex_Operator->Shape7->Repaint();

			}
			catch(Exception &e)
			{

				Ex_Operator->Prn1Err->Caption = "Ошибка отправки в УУВ ";

				Ex_Operator->Prn1ErrClear->Enabled = true;
				Ex_Operator->Shape7->Hint = e.ToString() + "/" + e.UnitName() + "/" + e.Message;
				Ex_Operator->Shape7->Brush->Color = clRed;
				Ex_Operator->Shape7->Repaint();
				if (Ex_Operator->Ardo1IPPort->Connected)
					Ex_Operator->Ardo1IPPort->Disconnect();
				Sleep(100);
			}

		}
		else
		{
			Ex_Operator->Shape7-
...
Рейтинг: 0 / 0
виснет экранная форма
    #40107183
Mizer73
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Vizit0r
TMemo из потока? Это уже начинает радовать.

не открывается ссылка
...
Рейтинг: 0 / 0
виснет экранная форма
    #40107194
white_nigger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mizer73,
Мягко говоря, не стоит лезть из потока к визуальным комронентам таким образом.
...
Рейтинг: 0 / 0
виснет экранная форма
    #40107195
northener
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Mizer73
Dimitry Sibiryakov
пропущено...

Синхронные функции не возвращаются до выполнения операции - не работает цикл
выборки сообщений - зависон. Разве это не очевидно?..


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

у меня, как раз, и есть тот случай, когда нигде и ни что не завязано на ожидание результата.

Вы бы код привели, который в основном потоке получает/читает что-то от внешнего устройства. Тогда бы я или кто-то другой смогли бы вас ткнуть носом в то место, где у вас проблема. А без кода смысла что-то обсуждать нет никакого.
А пока только от вас скажем так "странные" заявления типа синхронно могут происходить разные вещи, в том числе и те, которые не ждут друг от друга результата.
Как это понимать?
...
Рейтинг: 0 / 0
виснет экранная форма
    #40107208
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
String - сложная штука. Перед указателем лежит размер, после всего - ноль. А когда начинают в такой тип писать/читать из разных потоков.... Ну... Удачи!
...
Рейтинг: 0 / 0
виснет экранная форма
    #40107215
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mizer73,

три простых правила для начинающего многопоточника:
1. Никаких synchronize
2. Никаких Application.ProcessMessages
3. Никаких обращений к визуальной части из других потоков

Самое простое общение между основным и доп.потоком - через сообщения PostMessage.
...
Рейтинг: 0 / 0
виснет экранная форма
    #40107226
Zelius
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Первое правило Бойцовского клуба VCL - с ним работает только главный поток!
...
Рейтинг: 0 / 0
виснет экранная форма
    #40107227
Mizer73
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
wadman
Mizer73,

три простых правила для начинающего многопоточника:
1. Никаких synchronize
2. Никаких Application.ProcessMessages
3. Никаких обращений к визуальной части из других потоков

Самое простое общение между основным и доп.потоком - через сообщения PostMessage.


по-быстрому ничего не нашел про postmessage/
а какие еще варианты есть?
...
Рейтинг: 0 / 0
виснет экранная форма
    #40107249
rgreat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wadman
Самое простое общение между основным и доп.потоком - через сообщения PostMessage.

А я бы лучше посоветовал https://docwiki.embarcadero.com/Libraries/Sydney/en/System.Generics.Collections.TThreadedQueue

Не зависит от ОС.

Да и нет ничего хуже, чем "забить" спамом систему сообщений. Так можно и винду подвесить.
...
Рейтинг: 0 / 0
виснет экранная форма
    #40107250
rgreat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну или связку обычного TQueue + TCriticalSection.
...
Рейтинг: 0 / 0
виснет экранная форма
    #40107260
Mizer73
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
rgreat
Не зависит от ОС.

а чем отличается от обычного потока?
...
Рейтинг: 0 / 0
виснет экранная форма
    #40107273
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rgreat
Да и нет ничего хуже, чем "забить" спамом систему сообщений. Так можно и винду подвесить.

Я эту сказку много лет слышу, но ни разу с таким не сталкивался на практике.
Как и с теми, кто тоже с этим сталкивался.
...
Рейтинг: 0 / 0
виснет экранная форма
    #40107274
rgreat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wadman,

Лично сталкивался. Но не в своем ПО.
Давно правда было. Может с тех пор пофиксили.
...
Рейтинг: 0 / 0
виснет экранная форма
    #40107276
rgreat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mizer73
а чем отличается от обычного потока?
Мда. Тебе букварь по потокам надо читать.
...
Рейтинг: 0 / 0
виснет экранная форма
    #40107277
Fr0sT-Brutal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
rgreat
Да и нет ничего хуже, чем "забить" спамом систему сообщений. Так можно и винду подвесить.

Лимит 10т на поток, дальше будет отлуп. Периодически случается, если обработка тормозит. Ничего страшного, даже на другие потоки процесса не влияет.
Но своя очередь более удобна, если не нужно обрабатывать виндовые сообщения (от таймера, например)
...
Рейтинг: 0 / 0
виснет экранная форма
    #40107279
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rgreat
Лично сталкивался. Но не в своем ПО.

10000 сообщений закинуть и не обработать? Это нужно быть тотальным рукожопом.
Но не свое ПО наверняка не имеет названия, либо им нельзя светить?
...
Рейтинг: 0 / 0
виснет экранная форма
    #40107285
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Fr0sT-BrutalНо своя очередь более удобна, если не нужно обрабатывать виндовые сообщения (от
таймера, например)

....и поэтому не может применяться в GUI потоке.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
виснет экранная форма
    #40107295
rgreat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wadman,

Да я не помню подробностей уже.
Давно было. Win2000 и все такое.

Винда начинала тупить просто недетски, даже старый таск мэнаджер. При этом загрузка CPU минимальна.
Тупило явно там где требуется обработка сообщений, они просто не проходили вовремя.
Что за ПО ломало винду сейчас уже и не помню.

Помню что причина была найдена в перегрузке системы сообщений ОС. Вроде по системным евентам нашли.
...
Рейтинг: 0 / 0
виснет экранная форма
    #40107324
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov

Fr0sT-BrutalНо своя очередь более удобна, если не нужно обрабатывать виндовые сообщения (от
таймера, например)

....и поэтому не может применяться в GUI потоке.
однако в VCL своя очередь вполне успешно применяется, и этому есть причины, и они всё более актуальны
...
Рейтинг: 0 / 0
виснет экранная форма
    #40107330
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kealon(Ruslan)однако в VCL своя очередь вполне успешно применяется, и этому есть причины

Да. Рукожопость её архитектора, решившего впихнуть невпихуемое и запрячь в одну
телегу GUI, консоль и сервисы.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
виснет экранная форма
    #40107335
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,

Опосля то оно каждый решение найдёт.
Построить архитектуру до появления проблем, которые она должна решать, довольно сложно. А эта архитектура, хоть и с заплатками, выдержала все хаки, которые появились в ОС.
Более того, микрософт фактически скопипастила эту архитектуру (I/O Completion Ports).
...
Рейтинг: 0 / 0
виснет экранная форма
    #40107404
Fr0sT-Brutal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov

Fr0sT-BrutalНо своя очередь более удобна, если не нужно обрабатывать виндовые сообщения (от
таймера, например)

....и поэтому не может применяться в GUI потоке.

Если только совместно, но да, в GUI потоке особо смысла в ней нет - очередь уже есть, выборка тоже, т.е. вся обвязка, которая требуется для заведения виндовой очереди в фоновых потоках, уже готова. Даже case MsgRec.message и прочие апишные кишки не нужно делать - спасибо механизму procedure MsgFoo(var msg: TFooMsg); message MSG_FOO;
...
Рейтинг: 0 / 0
виснет экранная форма
    #40107406
Fr0sT-Brutal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
wadman
10000 сообщений закинуть и не обработать? Это нужно быть тотальным рукожопом.
Но не свое ПО наверняка не имеет названия, либо им нельзя светить?

У меня бывает, если запрос к базе сурово висит. Тогда механизм очистки не успевает сработать, и лимит исчерпывается.
Еще остается странный баг в потоке файловой записи при ||-ном запуске архиватора - 7зип как-то уж очень жестоко тормозит хард, хотя и странно, что прям настолько, чтобы запись одного кб длилась несколько минут.
...
Рейтинг: 0 / 0
виснет экранная форма
    #40107475
white_nigger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mizer73
wadman
Mizer73,

три простых правила для начинающего многопоточника:
1. Никаких synchronize
2. Никаких Application.ProcessMessages
3. Никаких обращений к визуальной части из других потоков

Самое простое общение между основным и доп.потоком - через сообщения PostMessage.


по-быстрому ничего не нашел про postmessage/
а какие еще варианты есть?
Используй TThread.Queue, Luke!
...
Рейтинг: 0 / 0
виснет экранная форма
    #40107481
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mizer73
wadman
Mizer73,

три простых правила для начинающего многопоточника:
1. Никаких synchronize
2. Никаких Application.ProcessMessages
3. Никаких обращений к визуальной части из других потоков

Самое простое общение между основным и доп.потоком - через сообщения PostMessage.


по-быстрому ничего не нашел про postmessage/
а какие еще варианты есть?
Еще - обновлять глобальную переменную через критическую секцию, а в главном потоке - через нее же читать эту переменную по таймеру.
...
Рейтинг: 0 / 0
виснет экранная форма
    #40107488
shalamyansky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YuRock
обновлять глобальную переменную через критическую секцию, а в главном потоке - через нее же читать эту переменную по таймеру.

Читать-то зачем через критическую секцию? Если читать только для того, чтобы прочитать, не надо себя ограничивать. Вот если читать для того, чтобы по результату обновить, а-ля транзакция, тогда, конечно, да. И заключить в скобки всю транзакцию.
...
Рейтинг: 0 / 0
виснет экранная форма
    #40107492
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
shalamyanskyЧитать-то зачем через критическую секцию?

Затем, что, судя по соседнему топику, у него там TStringList и надо быть
уверенным, что он не исчезнет и не поменяется в процессе чтения.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
виснет экранная форма
    #40107516
shalamyansky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov

у него там TStringList и надо быть
уверенным, что он не исчезнет и не поменяется в процессе чтения.

А... Ну, если чтение не атомарное, тогда, конечно, да...
...
Рейтинг: 0 / 0
виснет экранная форма
    #40107520
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov
shalamyanskyЧитать-то зачем через критическую секцию?

Затем, что, судя по соседнему топику, у него там TStringList и надо быть
уверенным, что он не исчезнет и не поменяется в процессе чтения.дык у TStringList (и иже с ними) есть встроенные методы блокирования модификации.
а вот если он ещё и сам исчезнуть может, то ой!
...
Рейтинг: 0 / 0
виснет экранная форма
    #40107522
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мимопроходящийа вот если он ещё и сам исчезнуть может, то ой!

Первый принцип параноидальной многопоточности: исчезнуть может всё, что не
прибито гвоздями к полу. И что-то я не помню блокировок в самом TStringList...
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
виснет экранная форма
    #40107562
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Fr0sT-Brutal
У меня бывает, если запрос к базе сурово висит. Тогда механизм очистки не успевает сработать, и лимит исчерпывается.

10000 сообщений в очереди. Все висят. Этим не хвастаться нужно, а исправлять.
Отправлять запросы в другой поток и ждать ответа и между делом работать с очередью.

Когда я понимал, что в очереди 100 сообщений висят, то этого было достаточно для понимания, что проблема не в очередях.

10000 сообщений, Карл! Этого мало. :(

Тут и своя очередь не поможет.
...
Рейтинг: 0 / 0
виснет экранная форма
    #40107573
Mizer73
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov
shalamyanskyЧитать-то зачем через критическую секцию?

Затем, что, судя по соседнему топику, у него там TStringList и надо быть
уверенным, что он не исчезнет и не поменяется в процессе чтения.

TStringList - это попытки разные...
уже и этого нет.

сделал обмен через структуру

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
struct Dat
{
	byte cmd;
	byte cmd2;
	byte data;
};

struct InOutData
{
	Dat * Data;
	int Count;
	int CountAll;
	void Create(int n)
	{
		Data = new Dat[n];
		CountAll = n;
	};
	void Delete(void)
	{
		if (CountAll > 0)
		{
			delete Data;
		}
	};
	void Remove(int y)
	{
		if (Count > 0)
		{
			for (int i = y; i < Count - 1; i++)
			{
				Data[i].cmd = Data[i + 1].cmd;
				Data[i].cmd2 = Data[i + 1].cmd2;
				Data[i].data = Data[i + 1].data;
			}
			Count--;
			Data[Count].cmd = 0;
			Data[Count].cmd2 = 0;
			Data[Count].data = 0;
		}
	}
};



один фиг...
...
Рейтинг: 0 / 0
виснет экранная форма
    #40107575
Mizer73
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Итого...

что же все-таки тормозит процесс?
Почему внутрянка, прогресс-бар, и иже с ними - все прекрассно работает, а на проц добавляется немного нагрузки и отрисовка окон начинает тормозить капитально.
Что на это влияет?
Еще никто не высказал мысль, кроме того, что общаться из потока с VCL из основной формы - плохо.
Почему плохо, что там не подтирается?
Почему открываю окошко, а там видна только рамка контура и буковки с текстовыми полями, а под ним торчит то,Ю что было под ним на форме, и все это накладывается друг на друга, фон окошка не закрашивается.

вот главный вопрос. что тормозить начинает?
...
Рейтинг: 0 / 0
виснет экранная форма
    #40107584
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mizer73,
правильно вам сказали
вы смотрели реализацию Lines у Memo?
как вы думаете, быстро идёт запрос к окну в другом потоке?
...
Рейтинг: 0 / 0
виснет экранная форма
    #40107589
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
shalamyansky
YuRock
обновлять глобальную переменную через критическую секцию, а в главном потоке - через нее же читать эту переменную по таймеру.

Читать-то зачем через критическую секцию? Если читать только для того, чтобы прочитать, не надо себя ограничивать. Вот если читать для того, чтобы по результату обновить, а-ля транзакция, тогда, конечно, да. И заключить в скобки всю транзакцию.
Чтобы получить консистентные данные. Вряд ли результатом расчета его потока является одна переменная размером в регистр.
...
Рейтинг: 0 / 0
виснет экранная форма
    #40107595
Mizer73
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
kealon(Ruslan)
Mizer73,
правильно вам сказали
вы смотрели реализацию Lines у Memo?
как вы думаете, быстро идёт запрос к окну в другом потоке?

очень быстро.
у меня в потоке, при отправке и получении данных по сети, идет визуальное отбражение "лампочек" на главной форме.
все мигает на ура.
гигантские объёмы информации обмена с базой данных в онлайне - ничего не висит. еще обмен данными с принтерами... и т.д. - ничего не висит. все зависание начинается с отрисовки окошек...
...
Рейтинг: 0 / 0
виснет экранная форма
    #40107596
rgreat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wadman
Тут и своя очередь не поможет.
В Queue влазит 2 миллиарда элементов. Это немного больше 10 тысяч.

Причем все происходит, как говориться, in-house, а не где-то в черном ящике системы, за пределами процесса.
...
Рейтинг: 0 / 0
виснет экранная форма
    #40107609
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mizer73
не висит. все зависание начинается с отрисовки окошек...

тогда и смотрите отрисовку окошек, может у вас GDI объекты не удаляются? (в диспетчере задач можно посмотреть использование GDI-объектов)
...
Рейтинг: 0 / 0
виснет экранная форма
    #40107659
Fr0sT-Brutal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
wadman
10000 сообщений в очереди. Все висят. Этим не хвастаться нужно, а исправлять.
Отправлять запросы в другой поток и ждать ответа и между делом работать с очередью.
Когда я понимал, что в очереди 100 сообщений висят, то этого было достаточно для понимания, что проблема не в очередях.
10000 сообщений, Карл! Этого мало. :(
Тут и своя очередь не поможет.

Если выборка медленней добавления - раскидывать смысла нет, по крайней мере, в моём случае это лишь сильно усложнит процесс. Вообще можно блокировать добавление по достижению лимита, но ситуация с переполнением нештатная, и делать ей отдельную обработку не особо нужно. Но уточню - именно в моём случае.

Вот чем виндовые очереди неудобны, так это невозможностью итерации. Можно вычерпать определенный диапазон, да, но проверить количество сообщений в ней уже нельзя.
...
Рейтинг: 0 / 0
виснет экранная форма
    #40107693
Zelius
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mizer73,

AQTime тральный думаю поможет понять самые узкие места. Или другой профайлер. Иначе никак, гадать можно бесконечно...
...
Рейтинг: 0 / 0
виснет экранная форма
    #40107698
энди
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
если использовался мемо то вполне возможно автор не знает про beginupdate и endupdate, а без этого добавление строк может превратиться в тот еще тормоз
...
Рейтинг: 0 / 0
виснет экранная форма
    #40107701
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Оно в любом случае тормоз, поскольку в EDIT принципе не имеет способа добавить
строку. Это делается через получение целого текста, его модификацию и посылку
обратно. Поэтому TMemo для лога - один из наихудших вариантов.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
виснет экранная форма
    #40107748
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,

ну в край то уже не нагоняй, давно не копал, есть в нём добавление
правда за 3 вызова оконной функции
...
Рейтинг: 0 / 0
виснет экранная форма
    #40107751
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kealon(Ruslan)есть в нём добавление правда за 3 вызова оконной функции

Вот только TMemo.Lines.Add работает именно как SetText(GetText + Str);
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
виснет экранная форма
    #40107897
Mizer73
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov
Оно в любом случае тормоз, поскольку в EDIT принципе не имеет способа добавить
строку. Это делается через получение целого текста, его модификацию и посылку
обратно. Поэтому TMemo для лога - один из наихудших вариантов.




я уже давно переписал обмен без TMemo, о чем писал выше.
однако - это все ловля блох, не меняющая сути проблемы.
...
Рейтинг: 0 / 0
виснет экранная форма
    #40107898
Mizer73
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
kealon(Ruslan)
Mizer73,
правильно вам сказали
вы смотрели реализацию Lines у Memo?
как вы думаете, быстро идёт запрос к окну в другом потоке?


уже нет мемо, а суть не поменялась
...
Рейтинг: 0 / 0
виснет экранная форма
    #40107899
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mizer73однако - это все ловля блох, не меняющая сути проблемы.

Естественно, исходники-то есть только у тебя и только ты можешь разобраться
почему они работают так как работают.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
виснет экранная форма
    #40107901
Mizer73
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Mizer73
Dimitry Sibiryakov
Оно в любом случае тормоз, поскольку в EDIT принципе не имеет способа добавить
строку. Это делается через получение целого текста, его модификацию и посылку
обратно. Поэтому TMemo для лога - один из наихудших вариантов.




я уже давно переписал обмен без TMemo, о чем писал выше.
однако - это все ловля блох, не меняющая сути проблемы.


Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
struct Dat
{
	byte cmd;
	byte cmd2;
	byte data;
};

struct InOutData
{
	Dat * Data;
	int Count;
	int CountAll;
	void Create(int n)
	{
		Data = new Dat[n];
		CountAll = n;
	};
	void Delete(void)
	{
		if (CountAll > 0)
		{
			delete Data;
		}
	};
	void Remove(int y)
	{
		if (Count > 0)
		{
			for (int i = y; i < Count - 1; i++)
			{
				Data[i].cmd = Data[i + 1].cmd;
				Data[i].cmd2 = Data[i + 1].cmd2;
				Data[i].data = Data[i + 1].data;
			}
			Count--;
			Data[Count].cmd = 0;
			Data[Count].cmd2 = 0;
			Data[Count].data = 0;
		}
	}
};
...
Рейтинг: 0 / 0
виснет экранная форма
    #40107903
Mizer73
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov
Mizer73однако - это все ловля блох, не меняющая сути проблемы.

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

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

скорость обмена- 1-2 сообщения 3-байтовых в секунду.
это что, нагрузка?
...
Рейтинг: 0 / 0
виснет экранная форма
    #40107904
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mizer73это что, нагрузка?

Нет, с этим справился бы и компьютер прошлого века, причём не выходя из
энергосберегающего режима. Если ЭТО у тебя тормозит, значит что-то у тебя
совершенно запредельно криво и никто на этом форуме даже в пьяном бреду не
сможет угадать что именно.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
виснет экранная форма
    #40107907
Mizer73
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov
Mizer73это что, нагрузка?

Нет, с этим справился бы и компьютер прошлого века, причём не выходя из
энергосберегающего режима. Если ЭТО у тебя тормозит, значит что-то у тебя
совершенно запредельно криво и никто на этом форуме даже в пьяном бреду не
сможет угадать что именно.

а я не говорю о том, что ЭТО тормозит.
я спрашиваю, что может так затормаживать экранные элементы.
...
Рейтинг: 0 / 0
виснет экранная форма
    #40107912
энди
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну мы так можем долго гадать на кофейной гуще, ответ - "что-то в основном потоке" тебя устроит?
...
Рейтинг: 0 / 0
виснет экранная форма
    #40107913
white_nigger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mizer73,
Так тебе ответили - запредельная? кривизна твоего кода. Имхо, ты взялся за непосильную пока для тебя задачу. Не хватает элементарных знаний по потокам и пользованию профайлером/дебаггером. Другой бы уже давно отпрофилировал и нашёл все бутылочные горлышки, а ты всё сеанс спиритизма на форуме пытаешься устроить
...
Рейтинг: 0 / 0
виснет экранная форма
    #40107914
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mizer73
я спрашиваю, что может так затормаживать экранные элементы.
Любой [полу]вучный цикл.
...
Рейтинг: 0 / 0
виснет экранная форма
    #40107915
northener
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2 Mizer73
А вы так и не показали свой код, который в основном потоке принимает/читает данные из СОМ-порта. Вы стесняетесь его показывать или что?
...
Рейтинг: 0 / 0
виснет экранная форма
    #40107916
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
northener
2 Mizer73
А вы так и не показали свой код, который в основном потоке принимает/читает данные из СОМ-порта. Вы стесняетесь его показывать или что?
Зато он показал несколько раз структуру принимаемых данных.
Изначально было ясно, что проблема в неконсистенции ее. Ну, так мой шар показывает.
...
Рейтинг: 0 / 0
виснет экранная форма
    #40107941
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mizer73

а я не говорю о том, что ЭТО тормозит.
я спрашиваю, что может так затормаживать экранные элементы.


22389174 - с утечками то всё в порядке, проверили?
...
Рейтинг: 0 / 0
виснет экранная форма
    #40107945
goldmi45
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mizer73

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
struct Dat
{
	byte cmd;
	byte cmd2;
	byte data;
};

struct InOutData
{
	Dat * Data;
	int Count;
	int CountAll;
	void Create(int n)
	{
		Data = new Dat[n];
		CountAll = n;
	};
	void Delete(void)
	{
		if (CountAll > 0)
		{
			delete Data;
		}
	};
	void Remove(int y)
	{
		if (Count > 0)
		{
			for (int i = y; i < Count - 1; i++)
			{
				Data[i].cmd = Data[i + 1].cmd;
				Data[i].cmd2 = Data[i + 1].cmd2;
				Data[i].data = Data[i + 1].data;
			}
			Count--;
			Data[Count].cmd = 0;
			Data[Count].cmd2 = 0;
			Data[Count].data = 0;
		}
	}
};


Я извиняюсь, плюсы не очень знаю, но что-то тут полный треш..

При Delete у вас данные уничтожаются, но переменные Count и CountAll не сбрасываются. В итоге это может привести к попытке доступа к несуществующему полю.
При Remore у вас уменьшается количество, но кроме того, что затирается Data[y], у вас затирается Data[Count-1].
...
Рейтинг: 0 / 0
виснет экранная форма
    #40107960
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Придумал новый термин - "интуитивное программирование".
...
Рейтинг: 0 / 0
виснет экранная форма
    #40107977
Фотография _avz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wadman
Придумал новый термин - "интуитивное программирование".

Если бог хочет наказать программиста, он подводит его к интуитивному программированию...
...
Рейтинг: 0 / 0
виснет экранная форма
    #40108003
rgreat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_avz
wadman
Придумал новый термин - "интуитивное программирование".

Если бог хочет наказать программиста, он подводит его к интуитивному программированию...
Хуже всего есть с интуицией при этом проблемы...
...
Рейтинг: 0 / 0
виснет экранная форма
    #40108142
Mizer73
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
kealon(Ruslan)
Mizer73
не висит. все зависание начинается с отрисовки окошек...

тогда и смотрите отрисовку окошек, может у вас GDI объекты не удаляются? (в диспетчере задач можно посмотреть использование GDI-объектов)


а чего им удаляться, если форма работает? Новые то не создаются...
...
Рейтинг: 0 / 0
виснет экранная форма
    #40108145
Mizer73
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
goldmi45
Mizer73

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
struct Dat
{
	byte cmd;
	byte cmd2;
	byte data;
};

struct InOutData
{
	Dat * Data;
	int Count;
	int CountAll;
	void Create(int n)
	{
		Data = new Dat[n];
		CountAll = n;
	};
	void Delete(void)
	{
		if (CountAll > 0)
		{
			delete Data;
		}
	};
	void Remove(int y)
	{
		if (Count > 0)
		{
			for (int i = y; i < Count - 1; i++)
			{
				Data[i].cmd = Data[i + 1].cmd;
				Data[i].cmd2 = Data[i + 1].cmd2;
				Data[i].data = Data[i + 1].data;
			}
			Count--;
			Data[Count].cmd = 0;
			Data[Count].cmd2 = 0;
			Data[Count].data = 0;
		}
	}
};



Я извиняюсь, плюсы не очень знаю, но что-то тут полный треш..

При Delete у вас данные уничтожаются, но переменные Count и CountAll не сбрасываются. В итоге это может привести к попытке доступа к несуществующему полю.
При Remore у вас уменьшается количество, но кроме того, что затирается Data[y], у вас затирается Data[Count-1].


если объект удаляется, то при закрытии формы. Какие данные туда будут писаться после?
Count всегда больше нуля. максимум, что затрется, это Data[0]. Где тут трешь?
можно только count-- перед циклом поставить.
я давно пользуюсь такой структурой, и без проблем.
...
Рейтинг: 0 / 0
виснет экранная форма
    #40108146
Mizer73
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
kealon(Ruslan)
Mizer73
не висит. все зависание начинается с отрисовки окошек...

тогда и смотрите отрисовку окошек, может у вас GDI объекты не удаляются? (в диспетчере задач можно посмотреть использование GDI-объектов)


не нашел, как смотреть
...
Рейтинг: 0 / 0
виснет экранная форма
    #40108147
Mizer73
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Mizer73
kealon(Ruslan)
пропущено...

тогда и смотрите отрисовку окошек, может у вас GDI объекты не удаляются? (в диспетчере задач можно посмотреть использование GDI-объектов)


не нашел, как смотреть

нашел...
...
Рейтинг: 0 / 0
виснет экранная форма
    #40108149
Mizer73
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Mizer73
Mizer73
пропущено...


не нашел, как смотреть

нашел...


сейчас, без потоков, крутится 470 объектов.
подключу потоки, посмотрю...
...
Рейтинг: 0 / 0
виснет экранная форма
    #40108182
Mizer73
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
C GDI все нормально, держит среднее значение
...
Рейтинг: 0 / 0
виснет экранная форма
    #40108209
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mizer73,

тогда вариантов не густо, либо профайлер брать, либо методом научного тыка отключать потенциальные места и смотреть результат.
...
Рейтинг: 0 / 0
виснет экранная форма
    #40108224
Softologic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov
Оно в любом случае тормоз, поскольку в EDIT принципе не имеет способа добавить
строку. Это делается через получение целого текста, его модификацию и посылку
обратно. Поэтому TMemo для лога - один из наихудших вариантов.

А вот кстати, что вместо TMemo для лога лучше?
У меня блин, тоже есть таковые в логах и тоже как то подтормаживают похоже
...
Рейтинг: 0 / 0
виснет экранная форма
    #40108226
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SoftologicА вот кстати, что вместо TMemo для лога лучше?

TlistBox. Может, даже в виртуальном режиме из кольцевого буфера.
Консоль тоже забавна.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
виснет экранная форма
    #40108227
Фотография DarkMaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov

SoftologicА вот кстати, что вместо TMemo для лога лучше?

TlistBox. Может, даже в виртуальном режиме из кольцевого буфера.
Консоль тоже забавна.


Для лога лучше всего файл. Имхо.
...
Рейтинг: 0 / 0
виснет экранная форма
    #40108228
Softologic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DarkMaster

Для лога лучше всего файл. Имхо.

Ну так то да, но иногда в GUI что то выводить то надо.
...
Рейтинг: 0 / 0
виснет экранная форма
    #40108231
Softologic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov
SoftologicА вот кстати, что вместо TMemo для лога лучше?

TlistBox. Может, даже в виртуальном режиме из кольцевого буфера.
Консоль тоже забавна.
Благодарю. А что такое "в виртуальном режиме из кольцевого буфера" (набрал вручную, не скопипастил. из уважения:)
...
Рейтинг: 0 / 0
виснет экранная форма
    #40108234
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SoftologicА что такое "в виртуальном режиме из кольцевого буфера" (набрал вручную, не
скопипастил. из уважения:)

TListBox.Style = lbVirtual
https://docwiki.embarcadero.com/Libraries/Sydney/en/Vcl.StdCtrls.TListBoxStyle

Кольцевой буфер это удобная (быстрая) структура для хранения фиксированного
количества данных (строк лога).

Ну а так-то да, для посмертного анализа нет ничего лучше файла. Хотя уже
магабайты не каждый осилит читать.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
виснет экранная форма
    #40108235
Softologic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov
SoftologicА что такое "в виртуальном режиме из кольцевого буфера" (набрал вручную, не
скопипастил. из уважения:)

TListBox.Style = lbVirtual
https://docwiki.embarcadero.com/Libraries/Sydney/en/Vcl.StdCtrls.TListBoxStyle

Кольцевой буфер это удобная (быстрая) структура для хранения фиксированного
количества данных (строк лога).

Ну а так-то да, для посмертного анализа нет ничего лучше файла. Хотя уже
магабайты не каждый осилит читать.
Понято. Принято. Респект!
...
Рейтинг: 0 / 0
виснет экранная форма
    #40108346
Mizer73
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
kealon(Ruslan)
Mizer73,

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


Обкладываю исключениями ПОМы..

столкнулся со следующим:

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
try
				{
					if (Ex_Operator->Ardo2DataIn.Count > 0) {
						ReadIncomeIPData2(Ex_Operator->Ardo2DataIn.Data[0].cmd, Ex_Operator->Ardo2DataIn.Data[0].cmd2);
						try
						{
							Ex_Operator->Ardo2DataIn.Remove(0);
						}
						catch(Exception &e)
						{
							AnsiString a = "Команда " + IntToStr(Ex_Operator->Ardo2DataIn.Data[0].cmd) + "/" + IntToStr(Ex_Operator->Ardo2DataIn.Data[0].cmd2) + "  " + e.ToString() + "/" + e.UnitName() + "/" + e.Message + "/" + e.UnitScope();+ "/" + e.UnitName();
							MessageBoxA(Ex_Operator->Handle, a.c_str(), "обработка 2-2", MB_OK);
						}
					}
				}
				catch(Exception &e)
				{
					AnsiString a = "Команда " + IntToStr(Ex_Operator->Ardo2DataIn.Data[0].cmd) + "/" + IntToStr(Ex_Operator->Ardo2DataIn.Data[0].cmd2) + "  " +  e.ToString() + "/" + e.UnitName();
					MessageBoxA(Ex_Operator->Handle, a.c_str(), "обработка 2", MB_OK);
				}

void __fastcall ArdoThread::ReadIncomeIPData2(int Comma, int Comma2)
{
	try
	{

....



Ошибку "Ассess violation at adress ..." выкатывает под заголовком "обработка 2", т.е., как я понял, не нравится строка
if (Ex_Operator->Ardo2DataIn.Count > 0)
но, эта структура создается в событии formcreate, а процесс создается позже.
и этот аксесс вываливается только при старте.
...
Рейтинг: 0 / 0
виснет экранная форма
    #40108366
northener
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Хм. Неужели все СИ-шники выдохли или выдохлись?
Почему тема продолжается в разделе Delphi?
...
Рейтинг: 0 / 0
виснет экранная форма
    #40108388
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
northenerНеужели все СИ-шники выдохли или выдохлись?

Во-первых, потому что у автора Билдер и его вопросы не про язык.
Во-вторых, потому что здесь больше его собратьев по разуму.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
виснет экранная форма
    #40108393
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mizer73
kealon(Ruslan)
Mizer73,

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


Обкладываю исключениями ПОМы..

столкнулся со следующим:

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
try
				{
					if (Ex_Operator->Ardo2DataIn.Count > 0) {
						ReadIncomeIPData2(Ex_Operator->Ardo2DataIn.Data[0].cmd, Ex_Operator->Ardo2DataIn.Data[0].cmd2);
						try
						{
							Ex_Operator->Ardo2DataIn.Remove(0);
						}
						catch(Exception &e)
						{
							AnsiString a = "Команда " + IntToStr(Ex_Operator->Ardo2DataIn.Data[0].cmd) + "/" + IntToStr(Ex_Operator->Ardo2DataIn.Data[0].cmd2) + "  " + e.ToString() + "/" + e.UnitName() + "/" + e.Message + "/" + e.UnitScope();+ "/" + e.UnitName();
							MessageBoxA(Ex_Operator->Handle, a.c_str(), "обработка 2-2", MB_OK);
						}
					}
				}
				catch(Exception &e)
				{
					AnsiString a = "Команда " + IntToStr(Ex_Operator->Ardo2DataIn.Data[0].cmd) + "/" + IntToStr(Ex_Operator->Ardo2DataIn.Data[0].cmd2) + "  " +  e.ToString() + "/" + e.UnitName();
					MessageBoxA(Ex_Operator->Handle, a.c_str(), "обработка 2", MB_OK);
				}

void __fastcall ArdoThread::ReadIncomeIPData2(int Comma, int Comma2)
{
	try
	{

....




Ошибку "Ассess violation at adress ..." выкатывает под заголовком "обработка 2", т.е., как я понял, не нравится строка
if (Ex_Operator->Ardo2DataIn.Count > 0)
но, эта структура создается в событии formcreate, а процесс создается позже.
и этот аксесс вываливается только при старте.
А дебаггер совсем не работает в билдере что-ли? Если нет - логируй каждую строчку кода и пытайся найти ошибку в своей логике.
...
Рейтинг: 0 / 0
виснет экранная форма
    #40108526
Mizer73
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
YuRock
Mizer73
пропущено...


Обкладываю исключениями ПОМы..

столкнулся со следующим:

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
try
				{
					if (Ex_Operator->Ardo2DataIn.Count > 0) {
						ReadIncomeIPData2(Ex_Operator->Ardo2DataIn.Data[0].cmd, Ex_Operator->Ardo2DataIn.Data[0].cmd2);
						try
						{
							Ex_Operator->Ardo2DataIn.Remove(0);
						}
						catch(Exception &e)
						{
							AnsiString a = "Команда " + IntToStr(Ex_Operator->Ardo2DataIn.Data[0].cmd) + "/" + IntToStr(Ex_Operator->Ardo2DataIn.Data[0].cmd2) + "  " + e.ToString() + "/" + e.UnitName() + "/" + e.Message + "/" + e.UnitScope();+ "/" + e.UnitName();
							MessageBoxA(Ex_Operator->Handle, a.c_str(), "обработка 2-2", MB_OK);
						}
					}
				}
				catch(Exception &e)
				{
					AnsiString a = "Команда " + IntToStr(Ex_Operator->Ardo2DataIn.Data[0].cmd) + "/" + IntToStr(Ex_Operator->Ardo2DataIn.Data[0].cmd2) + "  " +  e.ToString() + "/" + e.UnitName();
					MessageBoxA(Ex_Operator->Handle, a.c_str(), "обработка 2", MB_OK);
				}

void __fastcall ArdoThread::ReadIncomeIPData2(int Comma, int Comma2)
{
	try
	{

....





Ошибку "Ассess violation at adress ..." выкатывает под заголовком "обработка 2", т.е., как я понял, не нравится строка
if (Ex_Operator->Ardo2DataIn.Count > 0)
но, эта структура создается в событии formcreate, а процесс создается позже.
и этот аксесс вываливается только при старте.
А дебаггер совсем не работает в билдере что-ли? Если нет - логируй каждую строчку кода и пытайся найти ошибку в своей логике.


дебагером нет возможности смоделировать ситуацию.
Однако, все вернул к прежнему варианту, через TMemo, и нормально заработало. Правда, пришлось пару дней потратить на восстановление.
Больше не надо слушать разных умников, с их теориями. теоретики, есть теоретики, и КПД у них - пшик... по практике.
больше трогать код не буду.
...
Рейтинг: 0 / 0
виснет экранная форма
    #40108533
northener
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Не спешите радоваться. AV это очень плохая бяка. Победить её можно только полным выяснением причин из-за чего она хоть раз возникла!
Если не выяснили, вы до сих пор в зоне риска, что ваша ракета упадёт.
...
Рейтинг: 0 / 0
виснет экранная форма
    #40108560
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mizer73
YuRock
пропущено...
А дебаггер совсем не работает в билдере что-ли? Если нет - логируй каждую строчку кода и пытайся найти ошибку в своей логике.


дебагером нет возможности смоделировать ситуацию.
Просто интересно. А что мешало брэйкпойнт поставить где надо и запустить?
...
Рейтинг: 0 / 0
виснет экранная форма
    #40109642
Mizer73
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
YuRock
Mizer73
пропущено...


дебагером нет возможности смоделировать ситуацию.
Просто интересно. А что мешало брэйкпойнт поставить где надо и запустить?

так не могу найти то место, где это проиходит.

на домашнем компьютере все смоделировал - работает на ура.
на рабочих запускаю - ползет access violation
причем это начинает ползти при включении функционала обмена данными.
все эти точки облепил исключениями - ни одно не ловит это место.

сейчас пытаюсь настроить madexcrption - пока ничего не выходит.
однако, при закрытии проги, иногда выходит таже фигня - access violation. mad выдал табличку структуры данных с пустыми местами и адресами.
не могу понять, к какому месту это приложить.
...
Рейтинг: 0 / 0
виснет экранная форма
    #40109643
Mizer73
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
northener
Не спешите радоваться. AV это очень плохая бяка. Победить её можно только полным выяснением причин из-за чего она хоть раз возникла!
Если не выяснили, вы до сих пор в зоне риска, что ваша ракета упадёт.

да не победил ее еще...
...
Рейтинг: 0 / 0
виснет экранная форма
    #40109644
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mizer73так не могу найти то место, где это проиходит.

Это место (его адрес) пишется в сообщении об ошибке с точностью до байта.
Откройте для себя пункт меню "Search" - "Find Address...".
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
виснет экранная форма
    #40109683
Mizer73
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov
Mizer73так не могу найти то место, где это проиходит.

Это место (его адрес) пишется в сообщении об ошибке с точностью до байта.
Откройте для себя пункт меню "Search" - "Find Address...".

спасибо за подсказку. а в чем открыть?
в студии нет этого.
...
Рейтинг: 0 / 0
виснет экранная форма
    #40109687
northener
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть Goto Address . Чтобы этот пункт был активным программа должна быть запущена.
...
Рейтинг: 0 / 0
виснет экранная форма
    #40109691
Mizer73
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
northener
Есть Goto Address . Чтобы этот пункт был активным программа должна быть запущена.

а если ошибка выскочила при закрытии программы, и программа закрылась?
правда, такое бло 1 раз
...
Рейтинг: 0 / 0
виснет экранная форма
    #40109693
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mizer73а если ошибка выскочила при закрытии программы, и программа закрылась?

Сугубо всё равно, адреса постоянны для конкретной сборки. Но адрес придётся-таки
записать на бумажку прежде чем закрывать сообщение об ошибке.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
виснет экранная форма
    #40109694
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mizer73при закрытии проги, иногда выходит таже фигня - access violation. mad выдал
табличку структуры данных с пустыми местами и адресами.

Вероятно, падает одна из секций finalization. Поэтому юнит madExcept должен
стоять ПЕРВЫМ в списке USES проекта . Ну, может быть после FastMM...
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
виснет экранная форма
    #40109696
Mizer73
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov
Mizer73при закрытии проги, иногда выходит таже фигня - access violation. mad выдал
табличку структуры данных с пустыми местами и адресами.

Вероятно, падает одна из секций finalization. Поэтому юнит madExcept должен
стоять ПЕРВЫМ в списке USES проекта . Ну, может быть после FastMM...

ну, он наипервейший

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
#include <vcl.h>
#pragma hdrstop
#pragma package(smart_init) // madExcept
#pragma link "madExcept"
#pragma link "madLinkDisAsm"
#pragma link "madListHardware"
#pragma link "madListProcesses"
#pragma link "madListModules"
#include <tchar.h>
...
Рейтинг: 0 / 0
виснет экранная форма
    #40109697
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А, это де ещё и билдер с его проклятием неопределённого порядка инициализации...

Тогда используй штатный CodeGuard и не мучайся.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
виснет экранная форма
    #40109708
Mizer73
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov
CodeGuard

чего то я от него не заметил особой пользы
...
Рейтинг: 0 / 0
виснет экранная форма
    #40109709
Zelius
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
сдается мне, что просто порча памяти происходит... в таком случае прилетать будет из ниоткуда...
...
Рейтинг: 0 / 0
виснет экранная форма
    #40109711
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Zeliusсдается мне, что просто порча памяти происходит...

CodeGuard и это ловит. Просто надо уметь им пользоваться.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
виснет экранная форма
    #40109712
Mizer73
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov
CodeGuard и это ловит.

Dimitry Sibiryakov
Zeliusсдается мне, что просто порча памяти происходит...

CodeGuard и это ловит. Просто надо уметь им пользоваться.
не могу понять, куда он сохраняет лог файл
...
Рейтинг: 0 / 0
виснет экранная форма
    #40109716
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mizer73не могу понять, куда он сохраняет лог файл

https://docwiki.embarcadero.com/RADStudio/Sydney/en/Using_CodeGuard
CodeGuard also generates an error log named <project_name>.cgl that lists
any errors it finds. The error log is located in the same directory as your
executable.

Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
виснет экранная форма
    #40109720
Mizer73
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov
Zeliusсдается мне, что просто порча памяти происходит...

CodeGuard и это ловит. Просто надо уметь им пользоваться.

нашёл файл CLG:

Error 00001. 0x100C00 (Thread 0x22AC):

это оно?
...
Рейтинг: 0 / 0
виснет экранная форма
    #40109721
Mizer73
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov
Mizer73не могу понять, куда он сохраняет лог файл

https://docwiki.embarcadero.com/RADStudio/Sydney/en/Using_CodeGuard
CodeGuard also generates an error log named <project_name>.cgl that lists
any errors it finds. The error log is located in the same directory as your
executable.


точно...
методом научного поиска нашел.
...
Рейтинг: 0 / 0
виснет экранная форма
    #40109722
Mizer73
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Mizer73
Dimitry Sibiryakov
пропущено...

CodeGuard и это ловит. Просто надо уметь им пользоваться.


нашёл файл CLG:

Error 00001. 0x100C00 (Thread 0x22AC):

это оно?


я, так понимаю, должно быть продолжение после двоеточия.
но продолжения нет, и файл проги висит.
...
Рейтинг: 0 / 0
виснет экранная форма
    #40109748
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mizer73файл проги висит.

Отличная возможность подключиться к процессу отладчиком и посмотреть где, как и
почему.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
виснет экранная форма
    #40109751
Mizer73
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov
Mizer73файл проги висит.

Отличная возможность подключиться к процессу отладчиком и посмотреть где, как и
почему.
там всё умирает... в туман уходит...
...
Рейтинг: 0 / 0
виснет экранная форма
    #40109759
northener
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Будь я на вашем месте, я бы попробовал задействовать Эврику https://www.eurekalog.com/downloads_delphi.php].
Её триал не ограничен функциональностью в течение 30 дней. За 30 дней вы либо найдёте ошибку, либо откажетесь от этого всего. :)
Всё-таки эврика наиболее разработанный инструмент для нахождения ошибок в программах.
Ну и тем более главный "техподдержец" её в России (и возможно всего СНГ) регулярно читает и отвечает на форуме.
...
Рейтинг: 0 / 0
виснет экранная форма
    #40109847
Mizer73
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
northener
Будь я на вашем месте, я бы попробовал задействовать Эврику https://www.eurekalog.com/downloads_delphi.php].
Её триал не ограничен функциональностью в течение 30 дней. За 30 дней вы либо найдёте ошибку, либо откажетесь от этого всего. :)
Всё-таки эврика наиболее разработанный инструмент для нахождения ошибок в программах.
Ну и тем более главный "техподдержец" её в России (и возможно всего СНГ) регулярно читает и отвечает на форуме.


спасибо за совет
...
Рейтинг: 0 / 0
виснет экранная форма
    #40109884
Mizer73
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
CodeGuard, при запуске в режиме отладки, постоянно крутится на одном:

Код: pascal
1.
2.
3.
4.
0x0019DAB0 Call to SysFreeMem(0x007082C6) in process: Extra_Master.exe(24464)  - d:\radstudio\20.0\SOURCE\RTL\SYS\System.pas#4852
  0x00703542 - d:\radstudio\20.0\SOURCE\RTL\SYS\System.pas#4852
  0x0070BCBC - d:\radstudio\20.0\SOURCE\RTL\SYS\System.pas#37189
  0x014082C9



что это?
...
Рейтинг: 0 / 0
виснет экранная форма
    #40110654
Mizer73
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
нашел причину происходящего.
всем спасибо
...
Рейтинг: 0 / 0
виснет экранная форма
    #40110702
Zelius
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mizer73,

нашел - расскажи
...
Рейтинг: 0 / 0
виснет экранная форма
    #40111030
Mizer73
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Zelius
Mizer73,

нашел - расскажи


есть у меня функция получения даты/времени с сервера. Запрос.
что бы все компьютеры работали по времени сервера.
их , этих запросов, было так много, что они накладывались, видимо, друг на друга и гасили друг друга в контексте открыть/закрыть.

в отладчике естественно, эта хрень не выявлялась.
переделал функционал по-другому и пошло...

да, и по поводу замечаний про синхронизацию в потоке через Synchronize

Предыдущие ораторы были частично правы, как и архангельский.
Synchronize служит для синхронизации процессов, а именно - он синхронизирует обращение из потока к визуальным компонентам VCL. При Synchronize процедура из потока выполняется в основном потоке, а без Synchronize - в отдельном потоке.

Как то так.
...
Рейтинг: 0 / 0
виснет экранная форма
    #40111061
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mizer73,

удивительное открытие
особенно про процессы
...
Рейтинг: 0 / 0
виснет экранная форма
    #40111065
Mizer73
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
kealon(Ruslan)
Mizer73,

удивительное открытие
особенно про процессы


думаю, что это про процессы не является открытием. На форумах прочитал, проверил - так и есть.
...
Рейтинг: 0 / 0
виснет экранная форма
    #40111077
Zelius
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mizer73,

kealon(Ruslan) смутила путаница, для него процессы - это процессы Windows, а не бизнес процессы в приложении. Пара уточнений - с помощью Syncrhonize можно не только VCL синхронизировать, но и прочие разделяемые ресурсы, и еще есть TThrerad.Queue, то же что Syncrhonize, только без ожидания ответа...
...
Рейтинг: 0 / 0
виснет экранная форма
    #40111089
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Zelius
с помощью Syncrhonize можно не только VCL синхронизировать, но и прочие разделяемые ресурсы
Прекрасный совет, достойный интернета.
...
Рейтинг: 0 / 0
виснет экранная форма
    #40111123
Mizer73
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Zelius
Mizer73,

kealon(Ruslan) смутила путаница, для него процессы - это процессы Windows, а не бизнес процессы в приложении. Пара уточнений - с помощью Syncrhonize можно не только VCL синхронизировать, но и прочие разделяемые ресурсы, и еще есть TThrerad.Queue, то же что Syncrhonize, только без ожидания ответа...


так я про бизнес процессы и не говорю. Тут же форум по программированию, а не по построению логики процессов в приложении.
Хотя у меня там все круто завёрнуто...
Работа в онлайн режиме с приборами и устройствами - дело непредсказуемое.

Пользователи постоянно какой-нибудь нестандарт придумывают.
...
Рейтинг: 0 / 0
155 сообщений из 155, показаны все 7 страниц
Форумы / Delphi [игнор отключен] [закрыт для гостей] / виснет экранная форма
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]