В Compact Framework класс System.Windows.Forms.Timer не поддерживает конструктор system.componentmodel:
поддерживается новый таймер (): 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, он не добавляется в поле компонентов IContainer формы, поэтомуне получают auto-dispose () d, когда форма dispose () d.
Почему это не поддерживается?
Как лучше всего использовать Timers, когда моя форма удаляется?Похоже, у меня есть два основных варианта:
- переместить метод dispose () формы из .designer.cs в мой основной файл .cs и добавить ручной вызов _timer.dispose () втам
- или вручную добавить объект Timer в коллекцию компонентов при создании формы после того, как InitializeComponent () был вызван
Что мне лучше выбрать?Если я забуду сделать одно из этих двух действий, Timer будет жить вечно, сохраняя мою форму живой (потому что Timer не может быть GCed, и он содержит ссылку на метод Timer_Tick () моей формы, поэтому форма никогда не может быть GCed).
Отражает ли это решение по реализации некоторую странность в отношении таймеров и утилизации на машинах CF, о которой мне нужно знать?