Тёмный

Урок на делфи 98. TThread. Работа с потоками. 

КОДный Руслан
Подписаться 392
Просмотров 121
50% 1

Задание на Delphi. Как работают потоки. Убираем подвисание главной формы.
#delphi , #TThread
для выполнение задачи использовал компоненты и функции Button, TThread, ProgressBar1.

Опубликовано:

 

2 июл 2024

Поделиться:

Ссылка:

Скачать:

Готовим ссылку...

Добавить в:

Мой плейлист
Посмотреть позже
Комментарии : 32   
@pro_delphi
@pro_delphi 18 дней назад
То что делаешь продолжай делать, я бы хотел видеть конечно изложение материала как сравнение "старого" delphi и сопоставление с новой редакцией, ну вот, например, те же потоки как сделать стандартным способом на D7 и как сделать то же самое но современными методами
@KODnyj_Ruslan
@KODnyj_Ruslan 15 дней назад
Нее, мысль сравнения мне не очень. Буду делать как делал
@user-jj1in5zo2q
@user-jj1in5zo2q 12 дней назад
Как всегда интересные видео уроки! А не могли бы вы записать урок как программно из делфи допустим по нажатию кнопки завершить а потом запустить необходимую мне службу пусть к примеру это будет служба печати windows.
@KODnyj_Ruslan
@KODnyj_Ruslan 12 дней назад
Хорошо, добавил в планы
@nodirsadikov6029
@nodirsadikov6029 27 дней назад
Привет сделайте урок по веб сервер и методы post put get delete
@KODnyj_Ruslan
@KODnyj_Ruslan 26 дней назад
Попробую
@user-du2mf4zj1p
@user-du2mf4zj1p 7 дней назад
возможно что я что то не понимаю но разве нельзя поток выделить через таймер?
@KODnyj_Ruslan
@KODnyj_Ruslan 7 дней назад
Обновление прогресс бара через таймер? Можно но это не будет распределение по нескольким ядрам процессора, будет медленный работать и подвисать
@KODnyj_Ruslan
@KODnyj_Ruslan 7 дней назад
Если про вызов потока через таймер, то можно, у меня через цикл сделано что бы было наглядней было
@pro_delphi
@pro_delphi 18 дней назад
Ты это серьезно? каким он спросом пользуется "нулевым"? я позавчера искал вакансию на hh результат: в Иркутской, Красноярском крае, забайкалье, хабаравском, Якутия и т.д. во всем дальневосточном регионе - ноль вакансий! вот это супер популярность!!! это территория больше все Европы
@KODnyj_Ruslan
@KODnyj_Ruslan 18 дней назад
Наверно не так искали, я не говорил что он первый в рейтингах среди других языков, но спросом от пользуется
@user-np1bc8rn2k
@user-np1bc8rn2k 21 день назад
Несколько устаревший способ ... сейчас уже все используют класс Ttask
@KODnyj_Ruslan
@KODnyj_Ruslan 21 день назад
Не все используют. Многим достаточно tthread.
@pro_delphi
@pro_delphi 18 дней назад
Не смешите людей, что Delphi популярен на вашем канале даже подписчиков почти нет: 379 человек смешно даже как тo... вы сами себе противоречите.
@KODnyj_Ruslan
@KODnyj_Ruslan 18 дней назад
Есть каналы по Делфи где есть подписчики и по более, кроме вашего конечно)))
@X0KI3
@X0KI3 27 дней назад
Не используем обращение формы из потока. Это не есть хорошо. Для синхронизации используем критическую секцию. Не надо использовать Resume, он давно устарел и его не кто не рекомендует использовать. заместо него используем Start. Вот мой пример. однопоточности и многопоточности. type TMyThread = class(TThread) private FProgress: Integer; protected procedure SetSync; procedure SetEnd; procedure Execute; override; public { Public declarations } end; var Form1: TForm1; // Page: Integer; CriticalSection: TCriticalSection; implementation {$R *.dfm} procedure TMyThread.Execute; var I: Integer; begin CriticalSection.Enter; try for I := 0 to 100 do // за место 100 добавляем Page begin FProgress := I; Synchronize(SetSync); end; Synchronize(SetEnd); finally CriticalSection.Leave; end; end; procedure TMyThread.SetSync; begin Form1.sProgressBar1.Position := FProgress; Form1.sMemo1.Lines.Add('Цикл: ' + FProgress.ToString + ' пройден.'); end; procedure TMyThread.SetEnd; begin Form1.smemo1.Lines.Add('Пройдено: ' + FProgress.ToString + ' циклов.'); end; procedure TForm1.FormCreate(Sender: TObject); begin CriticalSection := TCriticalSection.Create; end; procedure TForm1.sButton1Click(Sender: TObject); var aThread: TMyThread; // aThread: array of TMyThread; I: Integer; для многопоточности begin Form1.sProgressBar1.Position := 0; { // Многопоточность SetLength(AThread, sSpinEdit1.Value); for I := 0 to Length(aThread) - 1 do begin // Page := sSpinEdit1.Value; AThread[I] := TMyThread.Create(True); AThread[I].FreeOnTerminate := True; AThread[I].Start; end; } AThread := TMyThread.Create(True); AThread.FreeOnTerminate := True; AThread.Start; end;
@KODnyj_Ruslan
@KODnyj_Ruslan 26 дней назад
При большом количестве потоков ваш вариант будет безопасней, спасибо
@user-np1bc8rn2k
@user-np1bc8rn2k 21 день назад
Вы на какой RAD Studio седите? так делали при царе горохе лет 15 назад
@KODnyj_Ruslan
@KODnyj_Ruslan 21 день назад
Я не слежу за модой, мне главное что бы работало.
@pro_delphi
@pro_delphi 21 день назад
Если у вас RAD 10.4 и выше то USES System.Threading, System.Diagnostics, System.SyncObjs TThread.Synchronize(nil, procedure() begin // например, memo1.lines.add('my messages''); end);
@pro_delphi
@pro_delphi 21 день назад
Но лучше используйте более современный класс MyThrede := TTask.Create(procedure() begin // что то делаем в потоке TThread.Synchronize(nil, procedure() begin // например, что то выводим на форму memo1.lines.add('my messages''); end); end);
Далее
NOOOOO 😂😂😂
00:15
Просмотров 5 млн
Чистка пляжа с золотом
00:49
Просмотров 214 тыс.
Чего ожидать от HTTP/3 + Go
51:07
Просмотров 7 тыс.
Delphi XE7 Поток и синхронизация
10:27
NOOOOO 😂😂😂
00:15
Просмотров 5 млн