涉及到异步访问数据库的问题,用不着多线程,使用异步方式就可以达到你要的效果,不过要数据库引擎本身支持。如果你用的数据库是SQL SERVER之类的东西,那么应该是支持异步访问的,在数据连接中设置连接已异步方式进行数据访问即可。如果你是用的ACCESS,FOXPRO等小打小闹的准数据库,那么用OLE DB FOR ODBC建立ADO 连接,可能也能支持异步方式,不过我可不清楚,因为我没有用过这类数据库。数据异步访问的具体情况也比较复杂,每种不同的数据库都有点小异,不过大同还是存在的,你可以查一下数据库的相关资料。还有就是访问的数据源很大,很复杂,需要大量运算的情况最好是用存储过程来实现,存储过程也是支持异步方式的,而且我觉得是效果最好的。
二、对LISTVIEW中的图标进行刷新的问题,其实是空间本身的毛病,也没有更好办法。我想你在刷新前先把当前所有图标清除掉,然后再一次性画上去,这样把刷新的速度降下来,可能感观上能觉得好一些,就象资源管理器里,如果你选择了一个很庞大的文件夹,它的LIST VIEW部分的刷新就是这样的,虽然比较慢,但没有闪烁感,可能会更好。
二、对LISTVIEW中的图标进行刷新的问题,其实是空间本身的毛病,也没有更好办法。我想你在刷新前先把当前所有图标清除掉,然后再一次性画上去,这样把刷新的速度降下来,可能感观上能觉得好一些,就象资源管理器里,如果你选择了一个很庞大的文件夹,它的LIST VIEW部分的刷新就是这样的,虽然比较慢,但没有闪烁感,可能会更好。
至于第二个问题,闪烁是控件本身的毛病,如果要把采样频率设得比较高的话是不能彻底消除的。你可以这样做,在刷新前先把当前所有图标都清除掉,然后再一次全画上去,这样虽然刷新速度慢了,但是闪烁可能会好一些。就象资源管理器里面,如果你在目录栏点了某个很庞大的文件夹,象windows这样的,它的LISTVIEW里面的项目更新就是先把当前所有项目清除掉,然后把windows目录下所有对象一次画进去,虽然速度比较慢,但是感观上的效果可能更好一些。