【发布时间】:2012-05-30 21:04:56
【问题描述】:
我有一个包含很多项目的列表视图。 我想删除一些同步的项目。 那可能吗? 我有大约 100 个线程同时访问 ListView 以删除其中的项目。
例如:
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时。这解释了错误和访问冲突。 (顺便说一句,当您输入error或access violation时,您应该输入的接下来的事情是确切的错误消息或访问冲突消息,包括任何内存地址。说errors and Access Violations而没有其他信息毫无意义。我们无法从这里看到您的屏幕。:-) -
我投了反对票,因为您发布的代码甚至与您正在使用的任何真实代码都不相近。您没有展示导致错误的原因(甚至没有给出您收到的错误消息)。您可能刚刚发布了
procedure DoNothing1; begin end; procedure DoNothing2; begin end;,它会是一样的。我要求你改进它并提供更多细节以便我们提供帮助,你发表了一些粗鲁的评论作为回应。所写的这个问题对未来的读者没有用处,因为它包含的信息不完整,甚至没有完全描述问题。 -
-1 表示这个问题很糟糕,而且你接受了一个我也反对的虚假答案。
-
@DavidHeffernan 大惊小怪。只是回答了一个不清楚的问题,没有理由拒绝投票,如果我真的理解这个问题,我会删除自己。
-
@opc0de 投反对票的原因是答案实际上不正确