Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.12.23;
Скачать: CL | DM;

Вниз

Потоки   Найти похожие ветки 

 
Pacific   (2007-11-29 20:52) [0]

Здравтсвуйте! Такой вопрос: у меня главная форма подвисает, когда
активируется процедура OnIcqLogin, ведь подвисать не должно :(

unit th;

interface

uses
 Classes, SysUtils, icqclient, icqworks;

type
 threed = class(TThread)
 private
  ICQClient: TICQClient;
   procedure OnICQLogin(Sender: TObject);
 protected
   procedure Execute; override;
 end;

implementation

{ Important: Methods and properties of objects in visual components can only be
 used in a method called using Synchronize, for example,

     Synchronize(UpdateCaption);

 and UpdateCaption could look like,

   procedure threed.UpdateCaption;
   begin
     Form1.Caption := "Updated in a thread";
   end; }

{ threed }
uses main;

procedure threed.OnICQLogin(Sender: TObject);
var
x:integer;
begin
x:=strtoint(form1.Label12.Caption);
Inc(x);
form1.Label12.Caption:=inttostr(x);
sleep(strtoint(form1.Edit3.text)*1000);
icqclient.SendMessage(strtoint(form1.edit6.text), form1.Memo1.Text);
end;

procedure threed.Execute;
var
sent:integer;
icq,uin,pass, proxy:string;
begin
sent:=0;
Inc(form1.listp);
If form1.listp=form1.Proxylist.Count-1 then
begin
proxy:=copy(form1.Proxylist.Strings[form1.listp], 1, 400);
form1.listp:=-1;
end
else
begin
proxy:=copy(form1.Proxylist.Strings[form1.listp], 1, 400);
end;
icq:=form1.ICQlist.Strings[form1.list];
uin:=copy(icq, 1, Pos(";", icq)-1);
pass:=copy(icq, Pos(";", icq)+1, 255);
icqclient:=Ticqclient.Create(nil);
ICQClient.DisableDirectConnections:= True;
ICQClient.ICQServer:= "login.icq.com";
ICQClient.ICQPort:=5190;
icqclient.UIN:=strtoint(uin);
icqclient.Password:=pass;
icqclient.OnLogin:=OnIcqLogin;
icqclient.Login();
end;

end.


 
tesseract ©   (2007-11-29 20:58) [1]

По этому не должна. А так черт знает где у тебя synchronize понатыкан.


 
Pacific   (2007-11-29 21:00) [2]

но так незя :(
icqclient.OnLogin:=synchronize(OnIcqLogin);
т.к.
property OnLogin: TLoginEvent;


 
Loginov Dmitry ©   (2007-11-29 21:43) [3]

Для устранения проблем, возникающих с данным кодом, необходимо в ПЕРВУЮ очередь убрать ВСЕ обращения к VCL из основного потока. Иначе "подвисание" - это ДАЛЕКО не самое страшное, что здесь может происходить.


 
Loginov Dmitry ©   (2007-11-29 21:45) [4]

> из основного потока


т.е. из дополнительного



Страницы: 1 вся ветка

Текущий архив: 2007.12.23;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.016 c
2-1196342254
NaRuTo
2007-11-29 16:17
2007.12.23
Можно ли поменять цвет шрифта TRadioGroup


2-1196253710
PASZLIB
2007-11-28 15:41
2007.12.23
Четность числа ?


1-1191498439
Kerk
2007-10-04 15:47
2007.12.23
Количество бит в байте


1-1191582712
Checkmate-maker
2007-10-05 15:11
2007.12.23
Обмен данными между процессами


15-1195944028
Суслик
2007-11-25 01:40
2007.12.23
Некие новости о Delphi