Üstteki resimde görülen event handler üzerinde işlem yapıldıktan sonra Application.xaml.vb dosyası içerisine aşağıdaki kod otomatik olarak yazılacaktır.
Private Sub Application_Startup(ByVal sender As System.Object, ByVal e As System.Windows.StartupEventArgs)
End Sub
Biz örneğin startup olayında bir msgbox ile bir mesaj görüntületelim.
Class Application
' Application-level events, such as Startup, Exit, and DispatcherUnhandledException
' can be handled in this file.
Private Sub Application_Startup(ByVal sender As System.Object, ByVal e As System.Windows.StartupEventArgs)
MsgBox("Güzel gören güzel düşünür. Güzel düşünen hayatından lezzet alır.")
End Sub
End Class
Projemizi çalıştırdığımızda ilk olarak mesaj penceresi ile belirtilen mesaj ekrana gelecektir.
Proje sonlanırken bir kod çalıştırmak için ise Application. xaml dosyası içerisinde yukarıdaki işlemde yaptığımız startup olayını eklediğimiz kısma Exit="Application_Exit" olayını eklemeliyiz.
Çıkış için de bir mesaj penceresi görüntületelim:
Private Sub Application_Exit(ByVal sender As System.Object, ByVal e As System.Windows.ExitEventArgs)
MsgBox("Hayırlı günler")
End Sub
Eğer işletim sistemi tarafından LogOff ,Windows Shutdown, Restart ve Hibernate olaylarından biri gerçekleştirilirse SessionEnding metodu tetiklenir. Bu olayları Application nesnesinin SessionEnding metodu içerisinde kodlayabiliriz.
Uygulamamızı bilinçli olarak sonlandırmak için Application sınıfının Shutdown metodu kullanılabilir. Uygulamamızın içerisindeki ShutDown metodunun hangi durumlarda otomatik olarak çalışacağı ShutdownMode özelliği yardımıyla değiştirilebilir. ShutdownMode özelliği
-OnLastWindowClose
-OnMainWindowClose
-OnExplicitShutDown
şeklinde 3 değer alır.
-OnLastWindowClose: Eğer projemizde birden fazla pencere varsa son pencere kapatıldığında uygulama sonlanır.
-OnMainWindowClose: Ana pencere kapatıldığında uygulama sonlanır.
-OnExplicitShutDown: Uygulamanın kapatılması kullanıcıya bağlıdır.
ReasonSessionEnding özelliği ise Logoff veya Shutdown değerlerini alır. SessionEndingEventArgs’ ın bir diğer özelliği olan Cancel özelliğine atanan değere göre de Shutdown veya Logoff’ dan vazgeçilmesi sağlanabilir.
Öncelikle Application.xaml dosyası içerisine SessionEnding="Application_SessionEnding" olayını ekleyelim.
Application.xaml.vb dosyası içerisine ise şu kodu yazalım:
Private Sub Application_SessionEnding(ByVal sender As System.Object, ByVal e As System.Windows.SessionEndingCancelEventArgs)
Dim soru As MessageBoxResult = MessageBox.Show("Bilgisayar " + e.ReasonSessionEnding.ToString() + " nedeniyle kapatılıyor. İptal etmek ister misiniz?", "Kapatma Sorusu", MessageBoxButton.YesNo, MessageBoxImage.Question)
If soru = MessageBoxResult.No Then e.Cancel = True
End Sub