DELPHI盒子
!实时搜索: 盒子论坛 | 注册用户 | 修改信息 | 退出
检举帖 | 全文检索 | 关闭广告 | 捐赠
技术论坛
 用户名
 密  码
自动登陆(30天有效)
忘了密码
≡技术区≡
DELPHI技术
lazarus/fpc/Free Pascal
移动应用开发
Web应用开发
数据库专区
报表专区
网络通讯
开源项目
论坛精华贴
≡发布区≡
发布代码
发布控件
文档资料
经典工具
≡事务区≡
网站意见
盒子之家
招聘应聘
信息交换
论坛信息
最新加入: wjy13061029975
今日帖子: 3
在线用户: 2
导航: 论坛 -> DELPHI技术 斑竹:liumazi,sephil  
作者:
男 roguebear (旺财) ★☆☆☆☆ -
普通会员
2018/9/12 0:17:01
标题:
终于搞定了 不会再偶尔弹出各种莫名其妙的窗口。 浏览:1821
加入我的收藏
楼主: 1: 把borlandmm.dll 从原来的上一任放的估计集成了fastmm的换成了bcb6本身的。

2:  去掉了线程里所有的sleep和Application->ProcessMessages();

3: 把凡是涉及到 table(和界面的cxgrid连接), cxgird 的操作全部从原来的
sendmessage  换成了  Synchronize

OK。现在长时间运行,目前为止一次错误都还没用出现。

多谢各位网友的帮忙和建议。。。。!
----------------------------------------------
-
作者:
男 keymark (嬲) ▲▲▲△△ -
普通会员
2018/9/12 8:34:04
1楼: https://github.com/pleriche/FastMM4/tree/master/Replacement%20BorlndMM%20DLL
dll位置


https://github.com/pleriche/FastMM4
https://github.com/ecofast/FastMM4CPP
https://github.com/apz28/Delphi-fastmm4m
FastMM4AVX
FastMM4-MP
FastMM4-AVX
lz 的  FastMM4-fpc
版本挺多的。。。。
https://blog.csdn.net/qq_19667153/article/details/50636121
线程发消息 给主线程得用这个吧  PostThreadMessage
非主线程里面不能用 Application.ProcessMessages吧 
这玩意主线程的?

在主线程收 PostThreadMessage 消息我还不会。。。。 求大佬教育下。。
----------------------------------------------
[alias]  co = clone --recurse-submodules  up = submodule update --init --recursiveupd = pullinfo = statusrest = reset --hard懒鬼提速https://www.cctry.com/>http://qalculate.github.io/downloads.htmlhttps://www.cctry.com/
作者:
男 wang_80919 (Flying Wang) ★☆☆☆☆ -
普通会员
2018/9/12 8:44:58
2楼: borlandmm.dll 和 fastmm 毫无关系。
----------------------------------------------
(C)(P)Flying Wang
作者:
男 bahamut8348 (leonna) ★☆☆☆☆ -
普通会员
2018/9/12 8:45:49
2楼: 说说兰州的问题,看兰州的描述,根本还是没有理解线程的一些特性。谁说线程里不能有processmessages的?sendmessage本身就是一种同步线程的手段,出问题就是自己代码的问题。一般win平台要同步线程,其中一种办法就是用消息去同步。

楼上的两个方法postthreadmessage和processmessages根本就是两个东西,postthreadmessage是给线程发消息的,而processmessages是处理消息用的。
接收消息就是直接处理消息就完了。

楼上先想清楚自己要问什么。
----------------------------------------------
--
作者:
男 keymark (嬲) ▲▲▲△△ -
普通会员
2018/9/12 8:49:58
3楼: 按此在新窗口浏览图片  看样子 老王也不知道 FASTMM4的dll可以给ide用 如果打开了内存泄漏检测 还能查 其他控件泄漏 虽然 得要map才能知道 代码行。(有的控件无码)
放exe下会不会加载我就不知道了 没试过。 不都是用pas单元调用?
FASTMM4 有替换  borlandmm的dll (有马)
----------------------------------------------
[alias]  co = clone --recurse-submodules  up = submodule update --init --recursiveupd = pullinfo = statusrest = reset --hard懒鬼提速https://www.cctry.com/>http://qalculate.github.io/downloads.htmlhttps://www.cctry.com/
作者:
男 wang_80919 (Flying Wang) ★☆☆☆☆ -
普通会员
2018/9/12 9:02:24
4楼: 至少我知道 两个dll 文件名不同。
但是我真不知道,可以替换。

关键是 我们 100% 不用   borlandmm.dll 这个东西。
任何情况,都不用。
即便是看到 borlandmm.dll 这个字符串出现在文件中,也不用。
----------------------------------------------
(C)(P)Flying Wang
作者:
男 roguebear (旺财) ★☆☆☆☆ -
普通会员
2018/9/12 13:32:02
5楼: 1: 关于borlandmm.dll的问题。 delphi我不清楚,我用BCB6.
之前主程序目录下有borlandmm.dll等一堆的dll。 出错有时弹出一个窗口是fastmm has detect...然后一堆的十六进制看不懂。我想着bcb6里面我没有集成fastmm啊,为啥会有fastmm出现? 可能是上一任是用的delphi开发重新编译了borlandmm集成进去了共150k左右。我就换成了bcb6自带的22k。目测用起来也没啥大问题,速度差不多没感觉到区别。

2:之前 Application->ProcessMessages(); 全部是在子线程里面。主线程只有一个大循环用case相应发过来的消息。

解决了1,2后还是会时不时出错,但是好很多了。。。但是还没用彻底解决。

3: 把凡是涉及到 table(和界面的cxgrid连接), cxgird 的操作全部从原来的
sendmessage  换成了  Synchronize。 就彻底解决。

所以我感觉1,2 其实不是问题所在。。。改不改都可以。
----------------------------------------------
-
作者:
男 wang_80919 (Flying Wang) ★☆☆☆☆ -
普通会员
2018/9/12 13:42:16
6楼: 6 啊,为啥不用1 ?
为啥不用 TC ?

我们的 10.2.3 社区版 难道还无法代替 6 ?
----------------------------------------------
(C)(P)Flying Wang
作者:
男 roguebear (旺财) ★☆☆☆☆ -
普通会员
2018/10/21 21:08:27
7楼: 经过再次测试,发现。凡是涉及table操作都用syn解决,其他改不改都不影响。原因应该是这里了。目前再也没有弹出过,一切正常。
----------------------------------------------
-
作者:
男 feiyanm (feiyanm) ▲▲▲▲▲ -
普通会员
2018/10/22 8:48:23
8楼: 恭喜楼主解决问题,看来楼主对线程的理解又加深了一些。可喜可贺!
----------------------------------------------
Delphi威武!千秋万代,一统江湖!Delphi威武!千秋万代,一统江湖!Delphi威武!千秋万代,一统江湖!Delphi威武!千秋万代,一统江湖!Delphi威武!千秋万代,一统江湖!Delphi威武!千秋万代,一统江湖!Delphi威武!千秋万代,一统江湖!我去WC吐一会儿去!
信息
登陆以后才能回复
Copyright © 2CCC.Com 盒子论坛 v3.0.1 版权所有 页面执行58.59375毫秒 RSS