powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Обрашение к TList в потоке
3 сообщений из 3, страница 1 из 1
Обрашение к TList в потоке
    #39968530
Janex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привет всем.

Есть компонент, в нём в отдельном потоке записывается данные в переменную типа TList,
типо в компоненте имеется TIdClient и в потоке смотрю непришло ли что то от сервера.

В OnExecute :
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
While Not terminated do begin 
    IdTcpClient.IOHandler.CheckForDataOnSource(10);
    If Not IdTcpClient.IOHandler.InputBufferIsEmpty Then Begin
...
...
      MyList.Add(123);
...
...
    End;

  sleep(10);
end;



И шас мне из главного потока надо читать MyList и удолять
прочианные.
Как ето правильно сделать ?
Ставил всякие TCriticalSection, чтоб одновременно несмогли читать/писать в MyList ,
но как то ето всё неработает.


WBR
Janex
...
Рейтинг: 0 / 0
Обрашение к TList в потоке
    #39968536
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Janex
Ставил всякие TCriticalSection, чтоб одновременно несмогли читать/писать в MyList ,
но как то ето всё неработает.
А должно. Значит неправильно ставил.

А еще есть TThreadedList<T> и TThreadedQueue<T>
...
Рейтинг: 0 / 0
Обрашение к TList в потоке
    #39968538
x1ca4064
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Janex,
Работайте с MyList через методы основного объекта, в которых делайте CriticalSection.Enter/Leave:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
function TMyObj.AddItem(const Item:integer):integer;
begin
  Result:=-1;
  CriticalSection.Enter;
  try
    Result:=MyList.Add(Item);
  finally
    CriticalSection.Leave;
  end;
end;

function TMyObj.GetItem(const n:integer):integer;
begin
  CriticalSection.Enter;
  try
    Result:=MyList[n];
  finally
    CriticalSection.Leave;
  end;
end;
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Обрашение к TList в потоке
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]