internal void RefreshRecycleInfo()
{
int newFileCount, newFolderCount;
newFileCount = newFolderCount = 0;
IntPtr enumIdListPtr;
recycleBinFolder.EnumObjects(IntPtr.Zero, (int)(ShellApi.SHCONTF.SHCONTF_INCLUDEHIDDEN |
ShellApi.SHCONTF.SHCONTF_NONFOLDERS), out enumIdListPtr);
IEnumIDList iEnumIdList = (IEnumIDList)Marshal.GetObjectForIUnknown(enumIdListPtr);
IntPtr pidlSub;
int celtFetched;
while (1 != iEnumIdList.Next(1, out pidlSub, out celtFetched))
{
++newFileCount;
Marshal.Release(pidlSub);
}
Marshal.Release(enumIdListPtr);
}以上这段代码是在一个timer中循环执行的,我把时间设置为50ms,可以发现内存占用以没M的速度上升。
现在发现是因为iEnumIdList和pidlSub没有正确的释放,请问这种com对象应该如何正确的释放。
申请的内存什么时候释放由它决定
c#程序在资源管理器中观察会发现,它的内存占用总是会一直彪升这不是内存泄漏~~没办法处理
顶多加上IEnumIDList = null; pidlSub = IntPtr.Zero;
texbox也是com刨根问底还是要去看.net 的GC
赋值为null
立即垃圾回收GC.Collect();也没别的办法了,这不是泄漏