首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VB >

vb6.0 关于CreateFileMapping的有关问题

2012-02-25 
vb6.0 关于CreateFileMapping的问题程序有一500ms定时器每次都hMapCreateFileMapping(&HFFFFFFFF,Securit

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等可能也只需用一次,因不了解你的目的,请自己酌情考虑。

热点排行