заспасливается окно из второго потока.

Jude
Дата: 18.05.2011 18:05:53
И снова здравствуйте!

тут маленькая трудность получается:

в главной форме обрабаываю сообщения от потока:
procedure TForm1.WMREGCHANGE(var Msg: TMessage);
//var n:^TChangeData;

begin

  if msg.LParam = 123 then
    label1.Caption:=Tdirictory(msg.WParam).getpath(Pointer(msg.WParam))
  else
  if msg.LParam = MSG_DooBle_FindEd then

  begin


    with Listview2.Items.Add do
    begin
      caption := Tfdubl(Pointer(msg.WParam)).a.cFileName;
      subitems.Add(Tdirictory(Tfdubl(pointer(msg.WParam)).dir).getpath(Tfdubl(pointer(msg.WParam)).dir));
      subitems.Add(inttostr(Tfdubl(pointer(msg.WParam)).a.nFileSizeLow)+ ' bytes');
      label1.Caption := subitems[0] + '\' + caption;
    end;
  end else
  begin
    //MSG_worck_complete;
    ser.Terminate;
    BTStopsearch.Enabled:=false;
    dirlist.Free;
    dirstorage.Free;

    BtSaerch.Enabled:=true;
  end;
  ProgressBar1.StepIt;
  ;
end;
шлю их так:

  const
  WM_REGCHANGE  = WM_USER + 1973;
  MSG_WoRCK_CoMPLETE = 532;
  MSG_DooBle_FindEd = 323;
  MSG_NEW_DIR_FindEd = 123;
...
if not dirlist.add(tmprec)
         then postmessage(fhndl,WM_REGCHANGE,dword(Tfdubl(dirlist.lastrez)),MSG_DooBle_FindEd);
...
sendmessage(fhndl,WM_REGCHANGE,dword(Tfdubl(dirlist.lastrez)),MSG_WoRCK_CoMPLETE);

при работе так засмпамливает главное окно, что то провисает.

пошел через поток, т.к. нужно, чтоб VLC не отвлекало приложение от скорости.

как бороть? посоветуйте?
defecator
Дата: 18.05.2011 18:07:42
чОрт, в темы Jude страшно заходить уже - чего хотел сделать-то ?
Barmaley57
Дата: 18.05.2011 18:10:25
Jude, а может стоит сделать паузу и скушать твикс почитать литературу?
Jude
Дата: 18.05.2011 18:58:53
Barmaley57
Jude, а может стоит сделать паузу и скушать твикс почитать литературу?

я последние 37 часов подрят "кушаю" литературу - не соображаю уже ничего.

но если есть толковая книжка по теме - всегда рад. Спасибо.

получается, что серч в потоке отрабатывает быстрее, чем компонент успевает добавлять итемы. т.е. "узкое" место = визуализация.
думаю может пусть юзер не знает "о чем задумался комп"? спамить 1 из 1000 сообщений, или врубать beginupdate...
Jude
Дата: 18.05.2011 19:04:02
defecator
чОрт, в темы Jude страшно заходить уже - чего хотел сделать-то ?


как всегда: разминка перед апокалипсисом.

проблема:
нужно чтобы приложение не тормозило поиск файлов. файлы ищет быстро, а рапортовать юзеру, в соответствии с заданием, чего нашло, не успевает.
похоже главный "тормоз" - TlistView, ну это не считая меня, конечно.

вот думаю как бороть.
Нелояльный
Дата: 18.05.2011 19:07:39
Используйте виртуальный режим TListView.
Barmaley57
Дата: 18.05.2011 19:08:29
Jude
думаю может пусть юзер не знает "о чем задумался комп"? спамить 1 из 1000 сообщений
Вот это здравая мысль.

P.S. Рихтера уже прочитал? (на всякий случай спрашиваю :))
Maxim Rusov
Дата: 18.05.2011 19:13:07
Засекай время с помощью GetTickCount и посылай сообщение об обновлении не чаще чем раз в N мс (например N = 100)
Jude
Дата: 18.05.2011 19:14:31
Barmaley57
Jude
думаю может пусть юзер не знает "о чем задумался комп"? спамить 1 из 1000 сообщений
Вот это здравая мысль.

P.S. Рихтера уже прочитал? (на всякий случай спрашиваю :))


можно Рихтера с назаванием книги или полное имя, чтоб можно погуглить было?

спасибо.
Barmaley57
Дата: 18.05.2011 19:17:31
Джеффри РИХТЕР "Windows для профессионалов...."