易截截图软件、单文件、免安装、纯绿色、仅160KB

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


相关问答:

ACCESS的自定义函数在delphi里怎么用呢...

我在模块里自定义了一个函数:stradd()

可是在adoquery1.sql.add('select stradd(author) from book');
时提示stradd未定义...

这个问题有什么办法可以解决的吗? 非常感激!


(在A ......

delphi 异步线程

delphi 异步线程怎么怎么实现?
请各位大佬帮忙!
最好有个实例!
多谢

你不同步就是异步了,还写啥

默认情况下,线程就是异步的…………*^_^*

估计楼主同步和异步概念都没弄清

真无语。。可 ......

delphi中select 的 where后面的id=变量怎么写啊

我的程序中有一段更新某一条记录的语句:
var
id:=integer;
begin
id:=strtoint(edit1.text);//edit1.text的值已经取得;
...
...
...
adoQuery1.sql.add('update 计划清单表 set 计划日 ......

delphi 有关dbgrideh的dropdownlist

这个属性怎么用啊?
我想实现如下功能:在dbgrideh中按下箭头,如果当前指针停留在相应列上,就列出预设的几个选项,供用户选择(与combobox)类似
请问,用dropdownlist可否实现?
新手,帮你UP下 人气。
......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号