vb6.0 关于CreateFileMapping的问题
程序有一500ms定时器每次都
hMap = CreateFileMapping(&HFFFFFFFF, Security, PAGE_READWRITE, 0, dataLen, mapFileName)
每次都CloseHandle(hMap)(返回值1)
可是HMap的值都不断的增加最后程序挂了!!~~
求助。怎样解决问题
[解决办法]
也许是磁盘缓冲的延时,以前听过Map文件,不是实时释放的说法。还有,你这个Map是用于什么目的,是进程间交换数据吗?其它程序有没有对它的操作?mapFileName是不是只用统一的一个名称?这东西我不熟悉,只是觉得CreateFileMapping这样频繁使用不太正常。
这是题外话了,内存映射文件的主要目的是在频繁交换数据时减少IO操作,你这样建了又放,而且不断反复,IO读写不但没少反而可能会增多,因为每次建放映射将是对整个文件长度的一次IO读写,比直接在磁盘上局部读写数据量还大。若非要这样做,你不如,不要映射,直接用磁盘文件算了。
可能MS也是没想到会出现这种用法,所以没考虑缓存会影响实时更新,或干脆就没打算支持这种用法。
我建议,CreateFileMapping是不是可以只用一次,保留handle,在定时器中使用。当然MapViewOfFile等可能也只需用一次,因不了解你的目的,请自己酌情考虑。