delphi多线程操作同一个listview,怎么办?
我有两个线程同时处理界面中的一个ListView
线程1:
我自己建立的线程类 对象 mythreadObj:
Execute()方法是一个死循环,循环内部有个这样的语句处理ListView
aListItem:=form1.ListView1.Items[i];
Synchronize(SetlistItemicon); //方法setlistitemicon 是设置所选的项的图标
。。。。。。。
。。。。。
end;
线程2中,我用一个timer定时器:
每隔一段时间,就刷新整个Listview中的列表。
就是每隔一段时间,就从一个数组中取出数据,根据数据生成listview中的item
listview1.clear;
根据数组内容,添加Item
我运行程序的时候,有时会出现异常,
应该是 两个线程间 同时操作Listview,所以出现异常
怎么处理呀。希望大虾给个 思路和帮我上面的加段代码
没做过多线程的,帮帮忙,急 急 急
为什么要在线程中操作VCL啊。
//线程单元内
uses SyncObjs;
//定义一个全局变量
var
CS: TCriticalSection;
在操作LV之前调用:
CS.Enter;
操作完成后:
CS.Leave;
initialization
CS := TCriticalSection.Create;
finalization
CS.Free;
线程中操作VCL很正常,比如多线程下载列表就有可能会用到
使用同步方法调用函数,这个函数调用会在主线程中调用,不会产生楼主所说的“应该是 两个线程间 同时操作Listview
相关问答:
我在模块里自定义了一个函数:stradd()
可是在adoquery1.sql.add('select stradd(author) from book');
时提示stradd未定义...
这个问题有什么办法可以解决的吗? 非常感激!
(在A ......
delphi 异步线程怎么怎么实现?
请各位大佬帮忙!
最好有个实例!
多谢
你不同步就是异步了,还写啥
默认情况下,线程就是异步的…………*^_^*
估计楼主同步和异步概念都没弄清
真无语。。可 ......
我的程序中有一段更新某一条记录的语句:
var
id:=integer;
begin
id:=strtoint(edit1.text);//edit1.text的值已经取得;
...
...
...
adoQuery1.sql.add('update 计划清单表 set 计划日 ......
这个属性怎么用啊?
我想实现如下功能:在dbgrideh中按下箭头,如果当前指针停留在相应列上,就列出预设的几个选项,供用户选择(与combobox)类似
请问,用dropdownlist可否实现?
新手,帮你UP下 人气。
......