![]() |
|
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]()
|
|
| X-Serge |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 6.10.2002 Репутация: нет Всего: нет |
Разъясните, пожалуйста, почему так:
Вот есть программа unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ComCtrls; type TForm1 = class(TForm) Button1: TButton; PB1: TProgressBar; PB2: TProgressBar; procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; type TMyThread1 = class(TThread) MyPB : TProgressBar; private { Private declarations } protected procedure DoWork; procedure Execute; override; end; var Form1: TForm1; T1,T2 : TMyThread1; implementation {$R *.DFM} procedure TMyThread1.Execute; begin Synchronize(DoWork); end; procedure TMyThread1.DoWork; var i : integer; begin MyPB.Min:=0; MyPB.Max:=10000; for i:=0 to 10000 do MyPB.Position:=i; end; procedure TForm1.Button1Click(Sender: TObject); begin if Button1.Caption = 'Stop' then begin T1.Terminate; T2.Terminate; Button1.Caption := 'Start'; Exit; end; T1 := TMyThread1.Create(False); T1.MyPB:=PB1; T2 := TMyThread1.Create(False); T2.MyPB:=PB2; Button1.Caption := 'Stop'; end; end. Я надеялся увидеть, что у двух ProgressBar'ов свойство Position будет меняться одновременно (почти одновременно), но это не так, сначала заполняется первый, затем-второй. Почему Или я где-то ошибся. Растолкуйте пожалуйста. Заранее благодарен. |
|||
|
||||
| Fantasist |
|
||||
|
Лентяй ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1517 Регистрация: 24.3.2002 Репутация: нет Всего: 41 |
Так ты же сам указал, что их надо выполнять синхронно.
То, что DoWork пренадлежит классу TMyThread1 не играет никаой роли - он будет выполнен в основном потоке. То есть Synchronize просто создает очередь из методов, которые нужно выполнить в основном потоке - и они по очереди исполняются. В основном потоке. Так что, не надо мудрить:
-------------------- Волны гасят ветер... |
||||
|
|||||
![]()
|
| Правила форума "Delphi: Общие вопросы" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |