Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Delphi Новый топик    Ответить
Топик располагается на нескольких страницах: Ctrl  назад   1 2 3 4 [5]      все
 Re: Обработка нажатия трех кнопок в параллельном потоке  [new]
YuRock
Member

Откуда: Донецк
Сообщений: 3429
Bellic
избавиться от "Программа не отвечает"(или как там?) в шапке форм! А как по другому этого избежать?

Делать тяжелую работу в другом потоке.

Bellic
Вот недавно сравнительно узнал, что можно ProgressBar.Refresh делать!

Не надо вызывать, если делать работу в другом потоке. Именно из-за того, что ты с помощью костылей пытаешься делать и работу и отрисовку интерфейса, у тебя и получается эффект, обратный

Bellic
код очень коротким получался ведь!?

Более того, ты вызовом принудительной отрисовки (ProgressBar.Refresh и подобного) замедляешь работу основного своего алгоритма, который ты называешь "циклом".
3 янв 18, 19:37    [21080540]     Ответить | Цитировать Сообщить модератору
 Re: Обработка нажатия трех кнопок в параллельном потоке  [new]
YuRock
Member

Откуда: Донецк
Сообщений: 3429
Bellic
код очень коротким получался ведь!?

Да, и еще. Мой код (с потоком) на 5 с половиной строк больше твоего потому, что я предусмотрел для пользователя возможность в любой момент корректно и сразу закрыть программу.
Если уважение к пользователям не нужно - можно убрать оттуда некоторые проверки, кое-где Wait заменить на Sleep, работать по FreeOnTerminate=True, и еще много чего.

Уверяю тебя, что код с потоком получится меньше, чем у тебя (хотя бы потому, что нет goto в основном алгоритме). И будет висеть при нажатии на крестик, пока не закончится "цикл", как ты любишь.
3 янв 18, 19:46    [21080558]     Ответить | Цитировать Сообщить модератору
 Re: Обработка нажатия трех кнопок в параллельном потоке  [new]
Freedoom
Guest
YuRock
Bellic
Freedoom, очень интересно получилось! Класс!
(Нет явного цикла ожидания, доп.потока и TAG использован по совету парней!)

Жаль только электроэнергии за нагрузку процессора в 100% и тормозов компьютера из-за этого.

Если речь идёт об экономии электроэнергии на время обдумывания выбора варианта ответа пользователем, то никто не мешает глянуть на реализацию ShowModal в первоисточниках и переделать цикл
repeat
  Application.HandleMessage;
until (FRes <> 0) or Application.Terminate;
3 янв 18, 21:21    [21080673]     Ответить | Цитировать Сообщить модератору
 Re: Обработка нажатия трех кнопок в параллельном потоке  [new]
YuRock
Member

Откуда: Донецк
Сообщений: 3429
Freedoom
переделать цикл
repeat
  Application.HandleMessage;
until (FRes <> 0) or Application.Terminate;
Это уже лучше, хотя и все равно мрак.
И это не первоисточники, а такие же костыли и грабли.
3 янв 18, 22:21    [21080772]     Ответить | Цитировать Сообщить модератору
 Re: Обработка нажатия трех кнопок в параллельном потоке  [new]
Freedoom
Guest
YuRock, см реализацию ShowModal в vcl.forms.pas
4 янв 18, 01:37    [21081088]     Ответить | Цитировать Сообщить модератору
 Re: Обработка нажатия трех кнопок в параллельном потоке  [new]
YuRock
Member

Откуда: Донецк
Сообщений: 3429
Freedoom
YuRock, см реализацию ShowModal в vcl.forms.pas
Я её смотрел уже раньше. Костыли и грабли.
Такой подход иногда допустим, когда действительно надо быстро вставить костыль в готовую рабочую систему, и другого выхода нет, кроме как всё переделывать, что может быть не выгодно.
Но заложить такое в основу библиотеки... Я когда первый раз наступил на это и увидел в чем проблема... Такого я от Борланда не ожидал.
4 янв 18, 02:26    [21081126]     Ответить | Цитировать Сообщить модератору
 Re: Обработка нажатия трех кнопок в параллельном потоке  [new]
Няшик
Member

Откуда: Екатеринбург
Сообщений: 885
YuRock
Такого я от Борланда не ожидал.


По моему они уже скатились, и сейчас выпускают что бы была активность для продаж
4 янв 18, 09:47    [21081236]     Ответить | Цитировать Сообщить модератору
 Re: Обработка нажатия трех кнопок в параллельном потоке  [new]
Vizit0r
Member

Откуда:
Сообщений: 559
Няшик, ты будешь удивлен, но Борланда уже почти 10 лет как не существует.
4 янв 18, 09:50    [21081237]     Ответить | Цитировать Сообщить модератору
 Re: Обработка нажатия трех кнопок в параллельном потоке  [new]
YuRock
Member

Откуда: Донецк
Сообщений: 3429
Няшик
YuRock
Такого я от Борланда не ожидал.


По моему они уже скатились, и сейчас выпускают что бы была активность для продаж
Код ShowModal не менялся больше 20 лет.
4 янв 18, 11:44    [21081361]     Ответить | Цитировать Сообщить модератору
 Re: Обработка нажатия трех кнопок в параллельном потоке  [new]
Bellic
Member

Откуда: Ростов-на-Дону
Сообщений: 231
Привет Сиквелцам!
Не хочется никого отвлекать пустыми разговорами - для себя оценил вариант YuRock-ка, поэтому буду внедрять Поток в свою прогу!
Единственное - хотелось бы увидеть полностью законченный вариант от Няшик-ка на Events!
Кнопки у него на форме имеются, а счет - отсутствует!
Няшик, допиши плизз...))

P.S. Прикрепляю полностью вариант проекта Няшик-ка для XE3 c двумя его реализациями - с массивами и без них, но в обоих случаях отсутствует цикл счета с выводом в MLabel: TLabel;

К сообщению приложен файл (-= EVENTS-НЯШИК =-.rar - 91Kb) cкачать
4 янв 18, 20:06    [21082244]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 2 3 4 [5]      все
Все форумы / Delphi Ответить