后来想到唯一一个可能ToolTip只能设定Tip, 好像没有移除过,那会不会控件从winform上移除以后在tooptip控件上还保留引用而没有被回收呢?
把程序中断,手动执行tooltip.RemoveAll()。看看,内存释放了。
看样toopTip还不够只能。
那怎样在每个部队牺牲后去分别在toopTip上注销它呢?从文档看ToolTip没有提供Remove(Control)方法。
用Reflector查看SetToolTip(Control,string)方法发现,如果string是空toolTip会移除控件。
OK, 问题解决。下面是改进版的CCC,里面能看到每次垃圾回收后内存状况:
http://www.gotdotnet.com/Community/Workspaces/viewuploads.aspx?id=1b78f7c1-895f-49a7-8fa6-1565db16d41b
knowbug, NPC增加的太多程序会死掉