Merhaba
ilk öneri benden. Basit, sade çözümleri severim o bakımdan lambalı radyo tarzı bir önerim olacak.
Programın OnFormCreate eventinde bir ini dosyasına bakılsın, oradaki boolean değer ve kişinin oturum adı ile tarih saat kaydedilsin. Çıkarken de tersi yapılsın. Tarihsaat için sisteminiz aynı sistemin uzak masaüstü hali olduğundan senkron olacağını değerlendirerek yazıyorum.
Program çalışması terminate veya halt ile kırılma ihtimaline yönelik OnFormCreate olayında öncül aşama kontrol olarak kullanıcı aktif olup olmadığı kontrol edilsin. Ben olsam 30 sn'de bir ini dosyasına tarih saat güncellemesi yapardım, eğer kullanıcı oturum hala açık ama program kırılmışsa diye.
son güncellemeden 30 saniye geçmişse program kırılmış veya donmuş demek olduğunu anlar, kendi oturum adımızı ve tarihi yazma işlemini yapardım.
Diğer kullanıcı INI dosyasına yazma arefesinde kendi kullanıcı adının silindiğini görünce o projenin kensini imha etmesini sağlardım.
Bu mekanizma kurulunca geriye projenin donmaması ve zamanında ini dosya yazma işleminine sadık kalmasına engel olacak ihtimalleri araştırıp bertaraf etmek için çalışırdım ki ini işlemini thread altında ana uygulama kanalından izole yaptırmak en makulü.
Bir de şu imkanınız olur, bir kullanıcın programını kapatmasını istiyor ama ona ulaşamıyorsanız, ini dosyasına girer oturum adını silersiniz, bilirsiniz ki en geç 30 saniye içinde projesi kapanacak