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

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

编辑:说三道四文库 发布时间:2017-05-29 03:41
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能解决这个问题,当然效率会低一些。但却是必须的。

微软新举措:打通Windows和WP开发者账户,下调注册费用 合并两应用商店的前兆?微软开始合并Windows Store和WP开发者账户 最难忘的Bug调试经历 LiveCode:让每个人都能开发APP的开发平台 17173总经理赵佳:媒体移动化需抓住三大要素 Django 1.6发布 支持持久数据库链接 如何优化单页面网站搜索引擎? TechCrunch国际创新峰会将于上海举行 极路由:一场由路由器引发的概念盛宴 14nm制程:三星64bit处理器 Exynos 6/S曝光 从Oracle到MySQL,余额宝云实践分享 从南水北调东线工程看物联网,大数据的另一面 不只是技术!成为IT经理必备的十大软技能 看看传说5亿行代码的Healthcare.gov网站的架构 如何走出选择PHP还是ASP.NET的两难境地? 你的设计够档次吗?分享25个奇异的404页面 百度LBS推Openmap战略:无编程经验者可通过拖拽制作个性化地图应用 百万用户时尚分享网站feed系统扩展实践 Twitter上市首战告捷的四大因素 大幕将启!MDCC2013移动开发者大会下周召开 TUP第30期:微软资深专家论如何用Visual Studio开发iOS、Android应用 [开源推荐]Riot.js:不足1KB的MVP客户端框架 研发周报:最难忘的Bug调试经历 NSA如何侵入Google和雅虎的私有数据网络? 飞天5K:开放比开源更有意义 MDCC之移动娱乐游戏峰会:手游金玩奖即将揭晓 开源巨人火狐浏览器:9周岁生日快乐! 感受OpenStack Summit香港大会 渣打科营中心:创建以技术为核心的企业文化 抱怨IT公司人才缺乏?留住现有人才方是正途 专访Esri中国区技术总监:打造新一代WebGIS平台 如何对数字进行位操作? 关于HTML的信息传递问题 这个焦点的问题了,为什么会这样了 学JAVA有什么经典教材吗?? java如何实现上传和下载(有关书籍也可以)? Apache日志太大问题 自定义控件的问题? vbscript编程问题,各位请进,其实很简单不过,我的vbscript太烂 给小弟推荐几本vb入门的经典好书!来者必有分。 DELPHI中查找记录的问题 有谁用过tw99200 vcd 制作卡 问什么我的声卡的录音属性中只有line没有line in 下午要去中国企业网福州分公司面试 几个小问题,敬请指教! 天要下雨,娘要嫁人!(zyq_123 (雍亲王)不是再作秀吧!) 在线调查:大家都用什么搜索引擎呀,google经常上不去 求教 为什么我从TListBox(或TCustomListBox)派生出的组件,放到窗口上后,总是出现no parent window的错误? 我在一个应用程序中以Motif风格显示控件,可是点击控件时总有个红 框框,应该怎么去掉呀! 开发EXCHANGE应用的困或? 关于增加新硬盘 ftp下载的实现(用internet transfer) 想订杂志但不知道哪些杂志好?诸位能给点意见与我吗???(图像类和网络类) 如何卸掉red hat linux7.2 sql server 2000 的配置参数疑问? 如果计算机有多个IP地址,如何得到主机的默认IP地址? 想订杂志但不知道哪些杂志好?诸位能给点意见与我吗???(图像类和网络类 想订杂志但不知道哪些杂志好?诸位能给点意见与我吗???(图像类和网络类 请问join的用法,谢谢! 请好心人帮帮忙吧,可以这样用VC做服务器组件吗? tomcat+apache为什么样会有这样的错误? 怎样在一个PROJECT里启动另一个PROJECT?大虾一定是轻车熟路的! 这样的写发为什么他只取第一个啊??? 在windows API中,有没有那个函数可以直接调用来显示cpu利用率的————请教!! 学FOXPRO到底还有没有用啊?为什么大学课程里都有它啊? 哪里有公式编辑器(包括数学,化学等公式)的ocx 或com呢? 急救 sqlserver 6.5 急~~到底是病毒作孽还是系统问题?? 燃眉之急,请各位指教 怎么知道数据库是否存在某个存储过程,在线急等! 请教:取CppWebBrowser中的page source 为什么我提交后的页面却又Dreamweaver打开了提交后的页面? 我用web程序生成了word的document的对象,怎么通过网页输出word文件?不是保存到硬盘,而是response到用户? 一道怪题,欢迎讨论 谁知道关于调整麦克风音量的API函数???请叙述详细一些,紧急,谢谢!!!!!! 发布一个串口调试程序,若用的着请进,急急急!!! 请问有那些关于vc界面的书呢? 请问大家硬盘是怎么装的,电路板朝上还是下,或者是斜着的?对硬盘有没有影响?up有分 关于动态SQL的问题,请各位大虾帮忙,急急.............. 为什么触发器只触发最后一条记录?(付触发器) 怎样查找一个时间范围的数据? 已知直线a、b,平面α、β,且a⊥α,b⊥β,下列说法正确的是( ) ①若α∥β,则a⊥b ②若a⊥b,则α∥β ③若α⊥β,则a∥b ④若a∥b,则α⊥βA①② B①⑤ C①④ D②④应该是b在β内,而不是b⊥β 不锈钢锅底发黑了怎么处理? 有谁知道预击穿的原理、条件、作用等,强调一下是“预击穿”.谁能下载到investigations the pre-breakdown of multicrystalline silicon solar cells,再给五分. 已知m,n 为两条不同的直线,a b为两个不同的平面 则下列说法对的事2m垂直a,a平行b 则m 垂直b3直线m上有不同的两个点到片面a的距离相等 则m平行a4若直线m n与平面a所成的角相等,则m平行n 不锈钢锅底发黑了怎么处理?3Q 绝缘子间隙的避雷器.绝缘子间隙那么大?怎么起到的间隙作用呢?求它的工作原理,保护原理 将氯气制成漂白粉的主要目的是什么 冷凝水是怎么形成趋势 液化气热水器水烧不热了是什么原因 什么是光合作用暗反应 它与光合作用有什么不同? 移动的大洋地壳在碰到大陆地壳时发生挤压,并且俯冲插入大陆地壳底下,由此而形成的地形可能是 “揭秘千岛湖水下古城群”的读后感去百度查“揭秘千岛湖水下古城群”,一天之内啊,读完文章后在写啊,要700字以上的 今天是1.17,明天要交的 将氯气制成漂白粉的主要目的是[ ] ①使它转变成易溶于水的物质 ②使它转变成稳定、便于储存的物质将氯气制成漂白粉的主要目的是 [ ] ①使它转变成易溶于水的物质②使它转变成稳 请问该怎么区分里氏硬度计的好坏呢? 千岛湖水下城市怎么形成的? 光合作用中暗反应中没有消耗的物质A.[H]和ATP B.[H]和CO2 C.五碳化合物和酶 D.三碳化合物和五碳化合物 公司要采购一款进口的超声波硬度计,测量凹槽比较多,帮忙介绍个好点的, 以下哪一种断层是由挤压力形成,并发生在破坏性板块边界?开心宝贝 A正断层 B逆断层 C冲断层 D判断层 光合作用暗反应总反应式 修改病句"广场挤满了来自祖国各地的许多工人、农民!" 水库选址应尽量避免断层、破碎带和喀斯特地貌?其中“破碎带”是什么地貌?还有,为什么不适合在“破碎带”和“喀斯特地貌”?为什么不适合在喀斯特地貌修建水库? 没有在光合作用暗反应中被消耗的是什么?A [H]和ATP B CO2 C五碳化合物和酶 D 三碳化合物 节日的广场上,载歌载舞,热闹非凡,修改病句. 全高超过40 有避雷线的杆塔,其高度增加与绝缘子增加的关系是什么拜托了各位 谢谢谁做得来 用氯气制漂白粉的主要目的是啥?A增强漂白和消毒作用B使其转化为溶解度更大的物质C使其转化为较为稳定的物质D提高物质中氯百分含量为啥不选A? 修改病句 1.本市商家大打价格战,商场里到处是成倍打折的商品. 云南抚仙湖考古详细经过 两个零件的装配,怎么知道要取什么公差和配合公差 工商管理部门立即查清了这家商场擅自提价 怎样改病句 关于古生物考古的书籍我儿子非常喜欢古生物考古,想帮他买点关于古生物考古和书籍,希望有此方面经验的人士帮忙推荐一下, “配合公差越大则配合越松”为什么错? 超声波雾化器原理是什么 可以治疗哪些疾病 A,B,C,D,E五种物质是含钠元素的单质或化合物,其中B为淡黄色固体它们有如图所示的转换关系(2)分别写出反应圈2、圈5的化学方程式 环氧树脂及其固化物的性能特点 原子吸收的雾化器是什么原理? 考古人员是如何推测古生物外貌的?看一些科教节目,科学家根据恐龙骨骼化石还原了恐龙的样子,根据骨骼化石可以得知形状大小,可是表皮颜色,皮肤质感,有毛没毛,脚上有没有蹼,甚至叫声,这 环氧树脂开裂.我用的是E51的环氧树脂,650的环氧固化剂.用之前分别在树脂和固化剂里加入一定的溶剂.固化剂里还会加3%左右的DMP-30.使用的时候发现有个别的胶面裂开,和龟裂纹一样,不规则的. 压缩雾化器家用儿童能用吗 工作原理是怎样的 .据中央电视台2001年6月3日对云南抚仙湖湖底古城考古的现场报道,科学家曾通过对古生物遗骸中的碳-14含量来推断古城的年代.碳-14原子的核电荷数为6,相对原子质量为14.下列关于碳-14原子的 m,n是两条不同的直线,a,b是两个不同的平面, 若m//a, n//b ,a垂直b, 则m垂直n 是否正确能详细解释吗,谢谢 选择性体现了细胞膜的流动性吗22.(07山东淄博)下列与细胞膜有关的四个选择项中,能说明细胞膜具有流动性的是( B ) A.选择性 B.主动运输 C.保护作用 D.自由扩散 不是说结构决定性质 若规定两数a、b通过“△”运算得3ab,例如2△4=3×2×4=24.若不论x是什么数时,总有a△x=x,求a的值. 板块运动的特点是什么?简短一点的 8年级上册物理电学所有单位转换-俄们明天就要考物理了,俄物理比较差,肯定考不好,就靠单位这个基础赚分了.希望各位亲爱旳们能把八年级上册电学旳电压阿、电流阿内些单位什么千欧的什 若规定两数a、b通过“△”运算得3ab,例如2△4=3×2×4=24.若不论y是什么数时,总有a△y=y,求a的值. 二氧化锰化学式 关于物理电学的几个单位转化问题一电子伏等于多少伏特?一个电子带电量是多少?1eV等于多少V? 若规定,ab两数通过△运算得到3ab,如2△5=3x2x5=30(1)、求5△(-三分之一)(2)、不论x是什么数总有a△x=x 求a的值 根据板块运动的特点填写下表用板块论理解释:红海面积在扩大,地中海面积在缩小,阿尔卑斯山的形成,珠穆朗玛峰在升高,英国地震很少,日本地震频繁 什么叫冷凝水回流加热固体时,试管要略向下倾斜,说是为了防止冷凝水回流,为什么试管口会有冷凝水啊 现有的数a.b,通过“三角形”预算的3ab,如2“三角形”=3X2X4=24.(1)求(-4)“三角形”5的值.(2)若不论x是什么数时,总有a“三角形”x=x.求a的值. 板块的运动特点是什么一句话好了! 怎么计算冷凝水没小时要加热25吨的热水,温度:进口20度、出口65度.蒸汽压力2kg/cm.求每小时有多少冷凝水? 臭氧灭菌的残留物会对人体造成危害吗 臭氧灭菌的残留物会对人体造成危害吗 板块运动的特点是是什么 求耐高温导电胶,要求固化后有一定的硬度和韧性,能耐500高温,与金属附着力好,耐酸碱盐.急盼?谢谢留言的那位,你怎么不把你公司名字和联系电话写上啊? 若ab两数通过△运算得3ab,例如,2△4=3*2*4=24不管x是什么数总有a△x=x,求a的值如题 盛放压缩空气的压力罐是否可露天存放 冷凝水的温度可能高达200度吗 有谁知道臭氧O3对人体具体有哪些伤害吗
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘