Таймеры поглощают исключения, возможно, вы получаете исключение в коде таймера, скорее всего, исключение между потоками. Попробуйте в настройках Visual Studio разбить на исключения (отладка> исключения) и посмотреть, получите ли вы что-нибудь.
Если вы получите исключение между потоками, вы не сможете использовать таймеры System.timer, поскольку они запускаются в пуле потоков. в этом случае вы должны использовать дружественный пользовательский таймер, например, из winforms / wpf, или выделенный поток