说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

Delphi多线程问题,谁能回答?

编辑:说三道四文库 发布时间:2017-09-25 07:14
HTML文档下载 WORD文档下载 PDF文档下载
为什么出错呢?

代码:
procedure TForm1.Button1Click(Sender: TObject);
begin

  ThTest:=ttest.Create(AdoQuery1);
end;

constructor ttest.Create(ADOQ: TADOQuery);
begin
ADOQuery:=ADOQ;
inherited create(false);
end;

procedure ttest.Execute;
begin

adoquery.SQL.Text:='select sum([Interval]) from Recordtab ';
adoquery.Open;//在此出错
if not (adoquery.Eof and adoquery.Bof) then
begin
  adoquery.Recordset.MoveFirst;
  GetVal:=adoQuery.Recordset.Fields[0].value;
end;

end;
主要是执行一个SQL汇总,用ADO调用MDB数据库 
补充一下,此程序在单线程下运行没问题。
另外谁能告诉我为什么ADO的所有控件打开操作完毕后关闭必须要有纪录才给关闭,而Delphi自代TTable,TQuery却没有这个问题
没人回答,俺加分,100
没人回答,俺加分,100
建议:
    做以下操作之前,先做
    adoQuery.Close;
    adoquery.SQL.Text:='select sum([Interval]) from Recordtab ';
    adoquery.Open;//在此出错
同样出错!
有没有人能回答啊?
好可怜哦,呜呜。
该我哭,你哭什么
使用Synchronize调用你的程序
Synchronize(你的程序名);
ok

Synchronize是将所执行线程的过程递交给主线程完成,此程序在主线程中运行没有问题,使用Synchronize也没有问题,但是一旦使用Synchronize,就没有办法再主线程中终止程序了,我现在做的是一个大库的查询(40万条)左右,希望能用多线程作退出查询
但你这种情况只能用Synchronize否则肯定有问题,我已经验证过了。
先通过了,然后再想别的方法。
我在三天前就通过了,程序也作的差不多,但就是心里窝火,他怎么就这么戈呢?其实用Synchronize还不如再主线程里直接做,多加个线程没有任何意义,但用TQuery没有问题,偏偏要访问mdb数据库,用Tquery还要建别名,有什么办法可以用Tquery访问MDB而不用BDE的吗?
看来Delphi的ado还是有问题。
那只能用外部组件了,否则你只能用ADO,ADO有什么问题?
我还不知道他程序的出错的提示信息是什么?
现象如下:如果在多线程中使用Tquery,可以正常打开查询,返回结果,如果相同的代码换成TADOQuery则在打开数据库时报错,错误是:
Project Project1.exe raised exception class EOleException with message '尚未调用
coinitialize.'。process stopped.use step or Run to continue.
另外如果用ADO如果数据库打开,删光所有纪录,数据库就管不上了,而用Data Access页的组件没有这个问题,这也是今天发现的 
不好意思,我在不走就没车了。
我明天再来,可以联系truest@163.com
瞎猜一下:Ado是基于com的,下面msdn上的一段关于CoInitialize的说明或许会有用。
Initializes the COM library on the current apartment and identifies the concurrency model as single-thread apartment (STA). Applications must initialize the COM library before they can call COM library functions other than CoGetMalloc and memory allocation functions. 

在关闭TADOQuery之前加一句
TADOQuery1.RecordSet.Close();
再试一试。
ADOqUERY.OPEN 就出错了
还没有解决吗?
不是灌水
那你就调用一下CoInitialize吧,在任何一个单元的initialization段中,然后在finalization中调用CoUninitialize(好象是这个名字)。
agui(阿贵) 说的对
也可以这样
在线程中调用其他单元的函数或过程来执行
注意vcl控件的执行期间调用问题
看看这样能否绕过同步问题。
constructor ttest.Create(ADOQ: TADOQuery);
begin
ADOQuery := TADOQuery.Create(nil);
ADOQuery.Asign(ADOQ);
inherited create(false);
end;

一个query关闭再执行另外一个啊,否则服务器会被你拖死的。
哇,PB的斑竹(liulee(流方) )跑到这里来了?
是多线程耶!怎么关闭在执行另一个?
关闭了在执行另一个,我还写多线程干吗?找麻烦?
richardsong(白玉老虎):DELPHI的帖子怎么跑到这里来了?再不走,我要赶了。。。。。。。。
我认为是ADO的问题。你就建个别名,用BDE吧,或者不用建别名,用DataBase连接,用文件名连接(我向来都是这样连接)。
哪个帖子跑到哪里了,说清楚!拜托
to am2000:
再者说,我又不是斑竹,我说了也不算,他自己跑过去的,我有什么办法?
是我的帖子吗?
呵呵,好像多线程我没用过似的。
你的帖子是什么啊???告诉我标题。
或者你去灌水乐园看看。。。
是不是那个“还学PB呢”那个帖子??????如果是,是我移的,呵呵。

当然是你移的,PB现在就你一个斑竹,不是你一的,难道还是我移的?还是他自己Move过去的。


还有:我没说你没用过多线程,我从来不挖苦别人,嘲笑别人或者贬低别人,这个良好作风Delphi里的弟兄可以作证,我们斑竹也可以作证的。老兄不要随便冤枉好人。
试着将
ADOQuery:=ADOQ;
inherited create(false);
这两句调过来试试看吧,我一向写新类都是先写第二句的,因为要有新类的实体,必定要先建立吗!?
如果还不行,那应该是戴妃与M$不和了.

to: 
richardsong(白玉老虎) 
我的帖子也被移过,还有别人的也被移过,CSDN的管理员他们也可以移。
你的帖子是我移的,你向Delphi搬救兵,所以我移到Delphi来了。
呵呵,就此打住吧。不争了,不争了。


    我试了一下,在主线程中先随便操作一下AdoQuery1(比如AdoQuery1.SQL.Text:='...')就能解决你的问题,不过我相信以后还会有其它问题。以下文字你应该见过:Methods and properties of objects in VCL can only be used in a method called using Synchronize.
    其实ADO组件本身支持异步操作的,在ExecuteOptions属性中设置,我没研究过。
    有纪录才能关闭的问题,安装ADO组件补丁(VCL,不是ADO本身)应该就能解决。
2 liulee:
   Ok,就此打住。
加一句
ADOQuery.clear;
ADO是COM组件。在线程中使用时需要先调用CoInitialize,对应的需要调用CoUninitialize。
 CoInitialize  怎么调用,use什么,
我经过反复验证,必须使用Synchronize,其作用是使线程与VCL同步。
VCL的相当一部分代码是线程不安全的,具体的说,大多数由TComponent所派生的类与线程不兼容,会导致一些错误。而Synchronize能解决这个问题,当然效率会低一些。但却是必须的。

在WindowsNT网络中广播消息 -VB资料 在可编辑控件中创建一个新的上下文菜单 -VB资料 在软件中设定热键-VB资料 在注册表中添加自己的文件类型-VB资料 在桌面上建立 Internet 快捷键 -VB资料 在桌面上添加程序的快捷方式 -VB资料 VB怎样得到当前的屏幕分辨率? VB怎样关闭Windows VB怎样关闭一个程序 VB怎样使我的程序总处于屏幕最前方?(Always on top) VB怎样延迟一个VB程序? VB怎样在VB中控制WORD VB怎样找到鼠标指针的XY坐标? 增加快捷方式到启动组-VB资料 直接呼叫RUNDLL来关机-VB资料 VB制作VB安装程序问答(二) VB制作VB安装程序问答(一) VB制作帮助文件速成 重新验证 Win 95 用户口令 -VB资料 桌面的大小 -VB资料 字体改变事件 -VB资料 自定义组合热键 -VB资料 自动更换墙纸的小软件-VB资料 自动记录应用软件工作时间 -VB资料 自动卷动TextBox -VB资料 自动开始上次关机时关闭的应用 -VB资料 自动装入注册设置 -VB资料 自己编程模拟 MouseEnter,MouseExit 事件 -VB资料 走进VB6啃一块骨头 做成一个时间限制的测试版 -VB资料 PHP中利用jQuery实现SWF图像上传和裁剪 怎样在局域网(没有连入internet)中设置,目录服务器?我想用netmeeting给学生们上课 寻找大连的朋友,共同参加趋势程序设计大赛! 急=>救救我:怎么约束用户只能输入中文呢?(用正则表达试吗?) 问一个超简单的问题。 新手的问题-- dataset或datatable中可以存放dataset吗?(在线) 问一个超简单的问题。 在c/s下面如何分页呢? 网站社区近日遭到不明人物的攻击,如何解决 如何查看死锁时1204跟踪标志错误日志清单,有分相送! 流光的启动画面很漂亮啊~~请问是怎么实现的? 如果要大量生产自己的产品和在市场上销售... 难受!没有信誉了,怎么活呀?人讲的什么呀?讲得是信誉呀. XML初学者问题:刷新数据 一个汇总查询的问题?? 请问,在用VB.NET写WEB应用程序时要怎么在网页间传递变量. 大家帮帮忙! 请问高手,在用MDI和数据库相连后,怎么样把自动生成的Form当成Page? 如何利用单片机取得电话来电号码? 如何插入名次字段数据? 如何插入名次字段数据? 在远程计算机上执行一个应用程序时,该程序用的是我的资源还是对方的? 用Borland C++ Builder 开发企业管理系统 又出现错误了????? 求助!!如何在StringGrid中显示ADOconnection中的数据?? 为了运行XML,服务器究竟要怎么样才行? directx屏幕捕获,为什么我的这段代码不行 小问题,大侠帮忙,小弟不胜感激!!!!! 我想使用一个字段来存储2万字左右的文章应该用什么类型(text不够用的)? 向非窗口类的对象发送消息呢? 如何重新检索 救急:Win me开始菜单及Taskbar的小图标都变花了,如何解决?up有分 ############狂送分,附带一个小问题########### 在bc中怎样创建资源文件?? 请高手进入,急!在线等待 生活有你 更新后台數據,用試圖就可以,用代碼就不行? ★★★CFormView的大小,高手没必要进,低手就可以解决了! 不超过十行,但.....(C) 打到雍亲王 "准女朋友的胸太平了,我该如何取舍? " 准备结贴了,要顶的赶快顶呀,去晚了就没机会了 为什么我从数据采集仪采集到的数据是乱码? 请教:动态的下拉菜单怎样做?在线等待,答对就给分! 有谁知道用vb如何把bmp的文件转换为jpg格式?? sql server2000是不是不能在winxp 专业版下安装?? 请问大家 wait函数的使用问题(给100) 关于wait函数的使用问题(给100) 如何在xp下能够删除带子目录的文件夹? [求助]关于考试座位号随机分配问题! 无奈的我等你的帮助! 在delphi中如何建立一个doc文件? MRS是什么软件我们是今天国际物流资料上看到的,是用在物流系统上的一个功能块.在物流系统里有以下功能:车间管理WMS 提供了车间管理的功能,可以设置车间生产机组的基本信息,对车间呼 keep an eye for sb./sth.如题 Korean Society of Food Science and Nutrition杂志名的缩写是什么 英语-concern in和conern with有区别吗? 英语,keep doing sth ,还是keep to do sth ,或者kee英语,keep doing sth ,还是keep to do sth ,或者keep do sth deakin university 如何 如果月光是源自于太阳的阳光,为何它无法杀死吸血鬼? ACCA中revaluation surplus和revaluation reserve的区别在那里 分别应该怎么记呢 我不知道宇宙是怎末形成的患者信息:女 13岁 重庆 巴南区 病情描述(发病时间、主要症状等):死死死死死死死死死死死死死死死死死死死死死死死死想得到怎样的帮助:死死死死死死死死 2009正衡中学暑假作业上的一道题以等腰三角形的一个直角边所在的直线为轴,将三角形高速旋转可以形成什么图形页数:数学第十页第四题的第三小题希望考上的大哥帮帮我吧 英语翻译thanks 啥叫called up share capital 正衡中学的暑假作业用什么笔写 revaluation reserve rt在记balance sheet的时候 记载哪里(asset capital liability) called-up capital是什么意思 我上高一了,快要分科了,上理科还是文科好呢? general reserve,pay up capital,profit and loss和reatained profit有什么区别,怎么用是会计的知识 If you want to plant flowers,you should put the s_____ in the soil first.在扩号内补充单词. 下列各组中不属于虫媒植物的是 ( ) A.梨、苹果 B.杨树、大麻 C.白菜、南瓜 D.桃、李 小明去郊游,去时,一半路程步行,一半路程乘车;回时,一半时间乘车,一半时间步行,结果返回时所用时间比去时多用40分钟,求全程及去时用时? 送东阳马生序中"马生是一个怎样的人?" 进口动物血清要从国外经口动物血清,您有经验吗可以证明是来自非疫区的国家,不具有传染性 女生英文名Keira、Karen 哪一个更好? 送东阳马生序中的马生后来成才了吗? 为什么在百度上输入“sb”排第一的是google、、而在谷歌上输“sb”第一个是白度? 女生英文名Karen、Winky 哪一个好? engine-oil&gasoline是什么意思 为什么百度搜索SB出来的是谷歌?谷歌搜索SB出来的是百度?都是sb惹的祸? 一道数学题(有赏)在参数方程为x=a+tcosA,y=b+sinA.(t是参数)所表示的曲线上有BC两点,它们对应的参数值分别为t1,t2.则线段BC的中点M对应的参数值是:( )A.(t1-t2)/2.B.(t1+t2)/2.C.(t1+t2)的绝对值/2.D.(t1+t2 宝马X5 仪表盘 chenk engine oil lev 什么意思 高中电学有哪些内容?急! 想预习一下后面的内容 一道数学题(加赏)这里面的 8.如图所示,是由两个等边三角形组成的图形,它是轴对称图形吗?如果不是,请移动其中一个三角形使它与另一个三角形一起组成轴对称图形.怎样移动,才能使所构 Share Capital and Reserves consists 1.已知某个四位数的十位数字减去1等于其个位数字,个位数字加2等于百位数字,这个四位数的数字反着顺序排列成的数与原数之和等于9878.试求这个四位数.2.不能写成两个奇合数之和的最大偶 做出大大的赏设X1 X2 式方程 X^2+PX+q=0 的实数根 X1+1 X2+1 是关于 X 的方程X^2+qX+P=0 的两实数根,请您求出 P q的值(X1 X2 中的1 和 2 只是小标 不是相乘) paid-up share capital是什么意思 数轴上表示整数的点称之为整点,某数轴单位长度是1cm,若在这个数轴上任意画出一条长为2006cm的线段AB,则线段AB盖住的整点个数有多少个?为什么?(注意请说明为什么) 把一个长,宽,高分别为8cm,7cm,6cm的长方形铁块和一个棱长为5cm的立方体铁块熔炼成一个直径为20cm的圆柱体铁块,求圆柱体铁块的高(损耗忽略不计,结果精确到0.01cm)要方程啊... 学校把制作280面小红旗的任务按照六年级三个班的人数分配给各班,一班有44人,二班有47人,三班有49人,三个班各应制作多少面小红旗 两袋分别盛着写有0、1、2、3、4、5六个数字的六张卡片,从每袋中各取一张,求所得两数之和等于6的概率,现在小华和小晶给出下述两种不同解答:小华的解法两数之和共有0,1,2,……10十一种不 赏分多有10个城市进行篮球比赛,每个城市均派3个代表队参加比赛,规定同一城市间代表队不进行比赛,其他代表队都要比赛一场,问按此规定,所有代表队要打多少场比赛? 已知x+1/x-4的绝对值+(x^2+1/x^2+a)^2=0求a的值 铁梨 如何食用 把一个长9CM宽7CM高3CM的长方形铁块和一个棱长5CM的正方形铁块,熔铸成一个底面直径是20CM的圆柱体,求高用方程解 汽车配置里ENGINE 如题 铁梨最早出现在什么时期 神经系统与内分泌系统的联系要经过内环境吗? (a-2)x乘a-1绝对值+4=0不对(a-2)x乘a-1绝对值+2=0绝对值是a-1的(a-2)x乘a-1的绝对值+2=0这是关于x的方程 铁梨手串怎么盘 以下3道思想品德题 谁能跟我解释一下 快1.一位著名的英国作家作过这么一个比喻:“如果你有一个苹果,我有一个苹果,彼此交换,那么,每个人只有一个苹果;如果你有一个思想,我有一个思想 x-1的绝对值大于x+4的绝对值 梨是不是和铁在一块烂得快 解释解释share这个单词..(英语高手进)share的意思不是共享, 参与, 一份, 部分, 份额, 参股,分享, 均分, 共有, 分配的意思吗..但为什麽"点燃激情传递梦想"的翻译是light the passion share the dream呢?有 Share income agreement是什么? ther are和they're读法有什么区别? 请问作为“资本”解释,asset和capital有什么区别? 请问food science和nutrition的区别是什么?food science和nutrition这两个学科有什么区别? they're 与 their 在美语里读音一样吗? capital这个英语单词是什么意思? Food and Nutrition 这个杂志大家熟悉吗? 颐和园被指随意拆老物件 回应系修缮石北漂保安自学半年考取律师 帮千余农民季建业落马内幕披露 出事后被免职速度印尼一男子酷似奥巴马 形象遭中国企业城管监察成北京公考最热职位 竞争比达云南数百村民打砸公务车 事件因强行征菲律宾总统仍拒绝为马尼拉人质事件道歉太原晋源区政府承认向法院发函 领导称湖南3名干部为升官偷拍县委书记 视频崔永元赴美国调查“转基因”食品安全政山东青州豪华车站成形象工程 1天仅卖数据显示我国未成年手机网民已破亿 更八成俄人认为俄腐败程度高 地方权力最印尼一男子酷似奥巴马 形象遭中国企业八成俄人认为俄腐败程度高 地方权力最沙特不收联合国“大礼”伦敦股市23日下跌图文:钱江隧道开始扫尾 预计今年年底浙江发布一批高校干部任免信息中国全国政协副主席杜青林访问保加利亚视频:10岁男孩午夜被切断右手 扔进汕头将举办丰富多彩的活动迎接第五届粤台湾食安造成民众恐慌 江宜桦正式道歉最美乡村教师冯元元:我不坚守,这7个聚焦汉语桥:洋学生的“中国梦”黄世铭遭起诉是否停职? 台法务部门:日议员向天皇递信 称希望亲自告知核电拉丁美洲无业和失学的青少年人数增加外媒:加拿大警方发现多伦多市长吸毒的迭戈·科斯塔出走 巴西急召罗比尼奥2013 2014年度哈萨尔搏克联赛第十二届世界武术锦标赛在马来西亚举行深圳市侨联赴杭州考察 两地侨联冀加强浙江省慈溪市侨联灾后扶助余姚民工子弟嘉兴海盐县澉浦镇侨联台联《三十年记事香港余姚联谊会名誉会长董伟慰问灾后姚中储粮两直属库主任因进口转基因菜籽油上海市侨联青年委员会新纳37名新侨赴台游成为内蒙古民众了解台湾的重要“广州塔万圣节之夜迎来海量人流 游客:重视前期规划 加强排污管理 专家解析中国杯冰舞俄罗斯组合暂居首 张伊伊/
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘