在Compact Framework上,System.Windows.Forms.Timer类不支持system.componentmodel构造函数:
支持新的Timer():http://msdn.microsoft.com/en-us/library/aa335543(v=vs.71).aspx
不支持新的计时器(IContainer容器):http://msdn.microsoft.com/en-us/library/aa335544(v=vs.71).aspx
这意味着,当我在CF应用程序中向表单添加一个Timer时,它不会被添加到表单的IContainer组件字段中,因此在表单处置时它不会获得auto-dispose()d( )d。
为什么不支持?
我的表格处理时,我应该如何最好地处理计时器?看来我有两个主要选择:
我更喜欢哪一个?如果我忘记执行这两个中的一个,Timer将永远存在,保持我的表单活着(因为Timer不能被GC,并且它持有对我的表单的Timer_Tick()方法的引用,所以表单永远不会被GC )。
这个实现决策是否反映了我需要注意的关于计时器和处理CF机器的一些奇怪之处?
答案 0 :(得分:3)
我投票支持选项3:不要通过表单设计器添加Timer;而是在代码中手动添加它,并手动将其添加到组件集合中。
我的理由如下: