Форум: "Начинающим";
Текущий архив: 2007.12.23;
Скачать: [xml.tar.bz2];
ВнизПотоки Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.051 c