Показать сообщение отдельно
  #1  
Старый 28.01.2009, 22:19
dixter dixter вне форума
Прохожий
 
Регистрация: 28.01.2009
Сообщения: 22
Репутация: 10
По умолчанию Потоки в dll

Здравствуйте!
В приложении есть главная форма на ней кнопка при нажатии на которую загружается dll.

Dll содержит содержит одну форму(form4) и модуль потока(unit2). На форме расположена кнопка (Button1) и поле ввода (Edit1). При нажатии на кнопку нужно запустить поток из которого значение edit1.text увеличивается на определенную величину.

Объясните почему не работает следующий код:
Код:
unit Unit2; //модуль потока
interface
uses
  Classes,SysUtils,unit4;

type
  potok = class(TThread)
  var i:integer;
  procedure asd;
  private
  protected
  procedure Execute; override;
  end;

implementation

procedure potok.asd;
begin
form4.edit1.text:=inttostr(i);
end;

procedure potok.Execute;
begin
  while 1=1 do
  begin
  synchronize(asd);
  inc(i);
  end;
 end;
end.



unit unit4 //модуль формы
mplementation
uses unit2;
{$R *.dfm}
var p : potok;

procedure TForm4.Button1Click(Sender: TObject);
begin
p:=potok.Create(true);
p.Priority:=tplower;
p.Resume;
end;
end.

Этот же пример пробовал без dll все работает;
Кстати если убрать синхронизацию(вместо synchronize(asd); просто имя функции) то все работает, значение edit1.text меняется.
Помогите кто чем сможет
Ответить с цитированием