|
|
导航: |
论坛 -> DELPHI技术
斑竹:liumazi,sephil |
|
作者: |
|
2019/7/28 20:03:26 |
标题: |
10.3.2的vcl简单的 ShowMessage('hello');都不简单 |
浏览:2850 |
|
加入我的收藏 |
楼主: |
有些程序,每执行一次就多一线程,有些则不会,很随机,看来这版完了
----------------------------------------------
- |
作者: |
|
2019/7/28 20:31:11 |
1楼: |
showmessage的问题,我找出来了,manifest设置里设了“Enable runtime themes”则每执行一次多一线程
----------------------------------------------
-
|
作者: |
|
2019/7/28 20:40:57 |
2楼: |
什么逻辑
----------------------------------------------
-
|
作者: |
|
2019/7/28 21:11:41 |
3楼: |
manifest里的“Enable runtime themes”打不打够,所调用的showmessage不是一个方法
----------------------------------------------
-
|
作者: |
|
2019/7/28 21:13:29 |
4楼: |
有点扯淡
----------------------------------------------
-
|
作者: |
|
2019/7/29 10:17:18 |
5楼: |
的确是很扯蛋,虽然线程最后都会释放,仍对这种不负责任的乱开线程表示鄙视。
----------------------------------------------
-
|
作者: |
|
2019/7/29 10:24:00 |
6楼: |
从号称程序大小没关系,,执行效率不差一点的人当道时起,这这种结果都是可以预料得到的。
精益求精的精神已经丧失。
关键问题:TaskDialogIndirect 属于windows系统API,线程由它创建,准确来说,不是VCL创建的,问题在于是否应该使用这个api
----------------------------------------------
-
|
作者: |
|
2019/7/29 11:07:37 |
7楼: |
前几天看了网友报cliendtdataset用到统计时报内存泄露,在调试时意外发现showmessage问题,当时很莫名其妙,跟踪了下源代码,才弄清楚。 另外,用回10.1版本的midas源码替换后,才把clientdataset的内存泄露改好。 不知emb给这版本留下多少坑?
----------------------------------------------
-
|
作者: |
|
2019/7/29 16:13:35 |
8楼: |
估计官方解决之前你只能用MessageBox临时替代这个ShowMessage了,或者自己写个ShowMsg函数替换它
----------------------------------------------
武稀松http://www.raysoftware.cn
|
作者: |
|
2019/7/30 6:03:32 |
9楼: |
去报告一下吧,否则官方可能根本不知道。我连大多数简单调试都用ShowMessage
----------------------------------------------
只有偏执狂才能生存!
|
作者: |
|
2019/7/30 10:06:22 |
10楼: |
我按照楼主的方法测试,没发现问题。 刚启动程序有4个线程,点击N次ShowMessage也是4个线程,过了几分钟剩下1个线程。
----------------------------------------------
Delphi4Linux Delphi三层/FireDAC 技术群:734515869 http://www.cnblogs.com/rtcmw
|
作者: |
|
2019/7/30 11:22:43 |
11楼: |
楼主出来证明一下楼上错了。 否则,我就相信楼上了。毕竟楼上水平高。
----------------------------------------------
(C)(P)Flying Wang
|
作者: |
|
2019/7/30 12:46:14 |
12楼: |
我想发张图片,老发不上,只能用文字说了
可以跟踪一下源码,showmessage的执行是有分支的,执行路径与操作系统和程序的工程选项有关,运行在winXp是执行老的showmessage方法,win7下要看应用程序的的设置,(蒲石)在6楼已经说的很清楚是跟调用TaskDialogIndirect有关。
我在上面也说过程序的工程选项,在Delphi的工程设置窗口中Application->manifest,右边选“Auto generate”和“Enable Runtime Themes”,打勾
----------------------------------------------
-
|
作者: |
|
2019/7/30 13:10:23 |
13楼: |
没仔细看 ,6楼说的有道理。 但是,既然是 微软干的,关 DELPHI 屁事。 这个 API,该不该调用,您是可以自己 决定的。 源码你们都看了,想用不想用,都可以。
那么多 and 只要有一个条件不满足。你们就能达到目的了。
不过,我非常喜欢这个 API。因为 UI 漂亮。
----------------------------------------------
(C)(P)Flying Wang
|
作者: |
|
2019/7/30 13:12:56 |
14楼: |
我只是碰到这问题,提醒一下大家,免得莫名其妙
----------------------------------------------
-
|
作者: |
|
2019/7/30 13:26:41 |
15楼: |
前几天测试网友报的Cleintdataset的内存泄漏的例子,其中有这么一句showmessage,我开始还以为clientdataset加的线程,谁知是Showmessage加的线程,有时会有些意料之外的事
----------------------------------------------
-
|
作者: |
|
2019/7/30 15:44:52 |
16楼: |
到底是 内存泄露 还是 加线程? 如果是 对象没销毁,肯定是 EMB 的责任。
----------------------------------------------
(C)(P)Flying Wang
|
作者: |
|
2019/7/31 12:00:46 |
17楼: |
delphi 10.3.2 又多一些BUG ,clientdataset
----------------------------------------------
-相互学习,共同进步! 努力每一天,不能望山跑死马 发上等愿,结中等缘,享下等福;择高处立,寻平处住,向宽处行
|
作者: |
|
2019/7/31 14:59:23 |
18楼: |
支持6楼。。。。
----------------------------------------------
弱小和无知不是生存的障碍,傲慢才是!
|
作者: |
|
2019/8/2 13:42:10 |
19楼: |
现在delphi主要用FireDac了,估计clientdataset都没维护了
----------------------------------------------
-
|
|