для гарантии одного потока
Ну, вы уже ответили на свой вопрос :) Такие события, как FormClosing и событие Tick таймера, все выполняются в одном потоке. Таймер не может «разбиться» на поток и запустить событие Tick, ваш поток занят очисткой. Событие Tick не будет запущено до тех пор, пока ваш поток снова не перейдет в режим ожидания, когда он завершит работу обработчика события и повторно войдет в цикл обработки сообщений.
Но прежде чем это произойдет, форма уничтожит себя, избавившись от всех своих элементов управления и компонентов. Это положит конец любой возможности для запуска события Tick таймера. Нет необходимости явно останавливать () его.
Это не относится к System.Timers.Timer или другим асинхронным компонентам, таким как BackgroundWorker. очень важно, чтобы вы остановили их до закрытия формы. Если вы этого не сделаете, то ваш код обычно будет бомбить исключение ObjectDisposedException. Особенно System.Timers.Timer трудно очень трудно остановить, он может запланировать поток, который вызывает обработчик события Elapsed за микросекунду до того, как пользователь закрывает форму. Большой Кабум, когда это произойдет. Не используйте его.