Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2007.10.28;
Скачать: [xml.tar.bz2];

Вниз

Тормазит главная форма....   Найти похожие ветки 

 
r.o.o.t ©   (2007-10-05 12:00) [0]

Господа подскажите я использую TSocketConnection но на слабых каналах свзяи тормазит все страшно в том числе и интерфей программы вынес TSocketConnection в Поток TTread
обращение к интефесу программы главной форме происходит
через Synchronize
тормаза остаются как быть как обстрагировать главную форму от TSocketConnection


 
Сергей М. ©   (2007-10-05 12:10) [1]

Показывай код ..


 
r.o.o.t ©   (2007-10-05 12:43) [2]

Procedure TCoreTread.Exec_InitSrvConnection;
begin
 try

  IPPort:=Exec_InitSrvConnection_IP_Port;
  IPAddres:=Exec_InitSrvConnection_IP_Adrr;
   SrvConnection:= TSocketConnection.Create(nil);
  SrvConnection.Address:=Exec_InitSrvConnection_IP_Adrr;
  SrvConnection.Port:=Exec_InitSrvConnection_IP_Port;

  SrvConnection.ServerGUID:="{AC69FABC-4752-4CF2-99E9-85CE86F99172}";
  SrvConnection.SupportCallbacks:=true;
  SrvConnection.LoginPrompt:=false;
  SrvConnection.Open;
  Exec_GetFile_FileList:=TStringList.Create;
  ContactUsersList:=TStringList.Create;
  InitSrvConnection:=true;
Except
end;
end;

rocedure TCoreTread.Exec_GetSrvGroupList;
Var
  StrucGroupList:WideString;
  i:integer;
  s:string;
  Struc:TStringList;
  MyTreeNode1      : TTreeNode;
  MyTreeNode2      : TTreeNode;

begin
 try
  Struc:=TStringList.Create;
  Struc.Text:=CAST5_Dicoding(
                             SrvConnection.AppServer.GetUserGroup(
                             CAST5_Encoding(Exec_GetSrvGroupList_RegionN,KeyHash),
                             CAST5_Encoding(Exec_GetSrvGroupList_RaionN,KeyHash)),
                             KeyHash);
     frMain.UserTree.Items.BeginUpdate;
     frMain.NodeProcess:=true;
     node1.DeleteChildren;
     for i := 0 to Struc.Count - 1 do
     begin
      MyTreeNode1:=frMain.UserTree.Items.AddChild(Node1,Struc.Strings[i]);
      MyTreeNode1.ImageIndex:=1;
       MyTreeNode2:=frMain.UserTree.Items.AddChild(MyTreeNode1,"Loading...");
     end;

     frMain.UserTree.Items.EndUpdate;
  Struc.Free;
 except
 end;
  Exec_GetSrvGroupList_RaionN:="";
  Exec_GetSrvGroupList_RegionN:="";
end;

procedure TCoreTread.Execute;
var
Signal_:string;
begin
 while True do
 begin
if SIGNAL<>nil then
  if SIGNAL.Count>0 then
  begin
    Signal_:=SIGNAL.Strings[0];
    SIGNAL.Delete(0);
  end;

  if SIGNAL_=SIGNAL_GET_SRV_GROUP_LIST then
     Synchronize(Exec_GetSrvGroupList);

  if SIGNAL_=SIGNAL_SRV_USER_LIST then
     Synchronize(Exec_GetSrvUserList);

  if SIGNAL_=SIGNAL_SRV_PING then
     Synchronize(Exec_SrvPing);
............
end;


 
Palladin ©   (2007-10-05 12:45) [3]

молодца...


 
Сергей М. ©   (2007-10-05 12:47) [4]

Тормоза у тебя из-за того что обращение к объекту SrvConnection.AppServer осуществляется в основном потоке.


 
r.o.o.t ©   (2007-10-05 12:51) [5]

чего делать??


 
Palladin ©   (2007-10-05 12:53) [6]

Стенку видишь? (c)


 
r.o.o.t ©   (2007-10-05 12:55) [7]

хорошь глумится
дай пример как делать правлено??


 
Palladin ©   (2007-10-05 12:59) [8]

Ээ нет... я так убьюсь...

хинт: исполняй в синхронизе только то что касается вывода на форму остальное перенеси в контекст потока


 
r.o.o.t ©   (2007-10-05 13:03) [9]

т.е. типа вот так???
rocedure TCoreTread.Exec_GetSrvGroupList;
Var
  StrucGroupList:WideString;
  i:integer;
  s:string;

  MyTreeNode1      : TTreeNode;
  MyTreeNode2      : TTreeNode;

begin
 try
  Struc:=TStringList.Create;
  Struc.Text:=CAST5_Dicoding(
                             SrvConnection.AppServer.GetUserGroup(
                             CAST5_Encoding(Exec_GetSrvGroupList_RegionN,KeyHash),
                             CAST5_Encoding(Exec_GetSrvGroupList_RaionN,KeyHash)),
                             KeyHash);

  Synchronize(UpdateList);
 except
 end;
  Exec_GetSrvGroupList_RaionN:="";
  Exec_GetSrvGroupList_RegionN:="";
end;

Procedure UpdateList;
var
 i:integer;
  s:string;

  MyTreeNode1      : TTreeNode;
  MyTreeNode2      : TTreeNode;
begin
   frMain.UserTree.Items.BeginUpdate;
     frMain.NodeProcess:=true;
     node1.DeleteChildren;
     for i := 0 to Struc.Count - 1 do
     begin
      MyTreeNode1:=frMain.UserTree.Items.AddChild(Node1,Struc.Strings[i]);
      MyTreeNode1.ImageIndex:=1;
       MyTreeNode2:=frMain.UserTree.Items.AddChild(MyTreeNode1,"Loading...");
     end;

     frMain.UserTree.Items.EndUpdate;
  Struc.Free;
end;


 
Palladin ©   (2007-10-05 13:16) [10]

уже гораздо разумней


 
r.o.o.t ©   (2007-10-05 13:18) [11]

так правлено или нет
пробую всерано замирает окно и ждет??


 
Сергей М. ©   (2007-10-05 13:25) [12]

Убирай Exec_InitSrvConnection, Exec_GetSrvUserList,  Exec_SrvPing из основного потока.


 
r.o.o.t ©   (2007-10-05 13:30) [13]

ну допустим убрал
что дальше??


 
r.o.o.t ©   (2007-10-05 13:33) [14]

дай примерную блок схему как мне организовать вызовы процедур в потоке и чтоб они возвращали результать на форму без тормажений
на моем примере хотяб приблизительно.....
плиз


 
Сергей М. ©   (2007-10-05 13:37) [15]


> допустим убрал
> что дальше??


Дальше некуда - "тормоза" должны исчезнуть.


> примерную блок схему


Действуй по той же схеме, по которой действуешь в [9]


 
Anatoly Podgoretsky ©   (2007-10-05 17:54) [16]

> r.o.o.t  (05.10.2007 12:43:02)  [2]

Архангельского начитался?



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

Форум: "Начинающим";
Текущий архив: 2007.10.28;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.49 MB
Время: 0.054 c
6-1172650257
Oleg_teacher
2007-02-28 11:10
2007.10.28
Помогите начинаещему с сокетами


2-1191237092
абв
2007-10-01 15:11
2007.10.28
blob и jpg


3-1182325808
msc32
2007-06-20 11:50
2007.10.28
IN (....)


2-1191763245
bagos
2007-10-07 17:20
2007.10.28
окна


2-1191758472
schaps
2007-10-07 16:01
2007.10.28
Вопрос по Exlib. Не выводит сумму в Edit15





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский