如果你在线程中不改变vDomino的话,是可以的。
str1,i1需要在线程对象中声明两个private变量再将str1,i1赋予他们
在线程的构造函数中把相关信息保存在线程对象中。
str1,i1需要在线程对象中声明两个private变量再将str1,i1赋予他们
在线程的构造函数中把相关信息保存在线程对象中。
解决方案 »
- indy Connection reset by peer如何最终解决
- 99分盼!如何在Access数据库的字段中存取文件,比如报表文件my.frp
- 如何修改本地时间,保持与服务器霎时间一致?
- 今天辞职了,散分~,我好象很久都没有散过分啦
- ShellTreeView只能显示目录,请问如何让ShellTreeView显示文件啊?谢谢
- 链接数据库后dll释放问题
- 请帮我分析一下 网易泡泡 大概是怎么做的
- 高分求救!这个问题要折磨死我了
- idftp的一个问题
- 加急!!!!请问如何动态建立 Access(*.mdb) 的odbc数据源(User Dsn)
- 请问查询日期,在线给100分
- 怎样让dbgrid的行宽不随字体大小而变化?
for i:=0 to Frmmain.ListViewRes.items.count-1 do
begin
if Frmmain.ListViewRes.Items[i].Checked then
begin
SqlCom.importresource(str1,vDomino,i1) ;
//str1:string,文件路径;
//vdomino:olevariant,一个自动化对象
//i1:整形
end;
end;//end for
也可以完成我的需求,而且不会导致sqlcom的问题;我只想不让程序看起来似乎死掉了
而且,当我这样写时,程序居然没有任何错误
但是,按照书上所写的,vcl并不都是线程安全的,要使用synchronize()来进行同步
那为什么这样写没有错误呢,是偶然的吗?如果用更好的方法,我该怎样改写代码呢?
看你怎么理解线程,线程就是与你的主进程同时运行的一段代码,他使用与主线程独立的堆栈,但全局变量等等并不独立。所以一般线程不能操作屏幕,因为主线程可能随时要更新屏幕。
同步操作就是要避免两个进程同时存取同一个地址空间。
但是如果只有一个进程写,其他进程只读,是不会产生进程冲突的。基于此原则,随便你怎么安排都可以。像屏幕操作因为windows还会刷新屏幕,所以线程还是不能执行此类操作.
我在考虑这种情况有没有更好的方法,能够将execute()中 for i:=0 to ListViewRes.items.count-1 do
begin
if ListViewRes.Items[i].Checked then
begin
SqlCom.importresource(strXmlPath,vDomino,ImportMode) ;
end;
end;//end for
的关于界面部分拆离出来,用什么来做一个中转呢?有没有一个通用的规则?