У меня есть список с большим количеством предметов. Я хотел бы удалить некоторые элементы, синхронизированные. Возможно ли это? У меня есть около 100 потоков, которые одновременно получают доступ к ListView для удаления элементов из него.Синхронизированное удаление в TListView?
, например:
procedure Thread1 ; stdcall;
var
item : TlistItem;
begin
//...
item.delete;
//...
end;
procedure Thread2 ; stdcall;
var
item : TlistItem;
begin
//...
item.delete;
//...
end;
/.... and so on
Нити уволят в то же самое время (возможно 1мс разница между ними). Затем я получаю много ошибок и AccessViolations. Пожалуйста, помогите. Спасибо :)
Вы не можете получить доступ к визуальным средствам управления VCL из потоков, отличных от основного потока приложения. IDE даже вставляет комментарий, чтобы сообщить вам, что при использовании 'File | New | Other> Thread Object' автоматически. Это объясняет ошибки и нарушения доступа. (BTW, когда вы вводите «ошибка» или «нарушение доступа», ** следующее следующее **, которое вы должны ввести, - это точное сообщение об ошибке или сообщение о нарушении прав доступа, включая любые адреса памяти. Высказывание «ошибок и нарушений доступа» без Другая информация не имеет смысла. Мы не можем видеть ваш экран отсюда. :-) –
Хорошо, Бенджамин. Я удалю свой второй комментарий и просто займусь вопросом, вместо того, чтобы дать вам возможность отредактировать его, чтобы улучшить его. Извините за попытку помочь. –
Не могли бы вы объяснить еще раз, почему вы ставите вопрос? –