![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Зависание TThreadList [D7, Win2k]
Bes © (2005-02-21 03:12:00)допутим
есть запись
TThreadRec=record
ThreadName:string[10];
ThreadFile:string[255];
Thread:TObject;
end;
PThreadRec=^TThreadRec;
...
var
ThreadList:TThreadList;
так вот, при создании какого-либо потока, создаю запись, вношу параметры и добавляю его в ThreadList.
Так же в программе есть форма со списком TListBox, в который надо поместить имена всех потоков.
делаю...
ListBox1.Clear;
try
for i:=0 to ThreadList.LockList.count-1 do
Listbox1.items.add(PThreadRec(ThreadList.LockList.Items[i])^.ThreadName);
finally
ThreadList.UnLockList;
end;
...данное деяние вызывает зависание программы (причем конкретное)... при переходе на TList - все в ажуре, летает и прыгает...
Мастера, так в чем проблема? Я понимаю что TList плохо использовать с потоками, но почему же присходить зависание?
Благодарствую!
Юрий Зотов (2005-02-21 05:37:00) [1]Посчитайте, сколько раз вызывается LockList и скажите - зачем?
Попробуйте так:
ListBox1.Clear;
with ThreadList, LockList do
try
for i := 0 to Count - 1 do
Listbox1.Items.Add(PThreadRec(Items[i])^.ThreadName)
finally
UnlockList
end;
Если причина только в этом, то должно заработать.