timer aslında işini görecek şey. Eğer sen uygulamayı belli tarihlere gelene kadar do while içerisinde sleep atarsan o uygulamadan eser kalmaz. Timerin kullanım amacı bu gibi durumlar içindir. Bir adet timer koy her 30 sn de bir çalışacak şekilde ayarla gün ay - saat dakika kontrolü yaptır eğer zamanı geldiyse işini yaptır en kabaca.
Sistem anlık çalışması gerektiği için saniye şaşmaları işime gelmez malesef. Hayır anlamadığım şey bu onlarca devasa online oyun nasıl bir sistem kullanıyor bu otomatik eventler için
senin dediğin mantık çok kötü. main thread hep çalışacak, belli aralıklarla başka threadları çalıştıracak, yani boştayken bile main thread aktif olacak

ya görev yöneticisinden kapatırlarsa main threadi

bu yüzden windows task scheduler konusunu araştırmanı öneririm.
Görev yöneticisinden kapatılamaz çünkü client-server çift taraflı yani server tarafına kullanıcı ulaşamaz. Keşke windows tabanlı olsaydı öyle olsa sorun olmazdı