楼主我 不是计算机专业的 但是作为一名工科男 酷爱编程 所以对事情很是推敲
今天测试了几个模块 也发现了几个问题,在此总结一下:
1,高精度模块存在BUG
版本:
模块名称:高精度等待
作者:凌晨孤星
.版本 2
.子程序 高精度等待, , 公开
.参数 微秒, 整数型, , 1000微秒 = 1毫秒 ; 1000毫秒 = 1秒
.局部变量 hTimer, 整数型
.局部变量 int64, LARGE_INTEGER
int64.QuadPart = -10 × 微秒
hTimer = CreateWaitableTimerA (0, 假, 0)
SetWaitableTimer (hTimer, int64, 0, 0, 0, 假)
.判断循环首 (MsgWaitForMultipleObjects (1, hTimer, 假, #INFINITE, #QS_ALLINPUT) ≠ #WAIT_OBJECT_0)
处理事件 ()
.判断循环尾 ()
CloseHandle (hTimer)
其实这乍看一下没啥问题,但是用作者提供的编译好的模块,运行时,再高次循环中发现,再循环中 频繁调用高精度等待模块,会导致句柄数狂飙,仔细推敲,结果发现这个代码出了点问题:
CloseHandle (hTimer)
这个关闭线程句柄的代码,实际上是OK的,但是为什么用作者编译好的模块就有问题了呢?经过测试,从重新编译一次模块再调用就OK了!
或者替换这个命令&#