Makale Özeti

Event driven programlada eventlerle bol bol haşır neşir oluruz. Uygulama geliştirirken Click, MouseDown, TextChanged gibi eventleri dinleyip, eventler oluştuğunda yapılması gereken eylemleri koda dökeriz. Bu makalemizde bütün wpf uygulamaların başlangıç noktası olan Application sınıfının Startup, Activated, Deactivated, Exit, DispatcherUnhandledException, SessionEnding eventlerini incelemeye çalışacağız.

Makale

Event driven programlada eventlerle bol bol haşır neşir oluruz. Uygulama geliştirirken Click, MouseDown, TextChanged gibi eventleri dinleyip,
eventler oluştuğunda yapılması gereken eylemleri koda dökeriz. Bu makalemizde bütün wpf uygulamaların başlangıç noktası olan Application sınıfının
Startup, Activated, Deactivated, Exit, DispatcherUnhandledException, SessionEnding eventlerini incelemeye çalışacağız.

Xaml


Startup
Application Run() metodundan sonra ve Application Run() içine parametre geçilen window ekran üzerinde görünmeden önce bu event tetiklenir. Bu
event içinde, App.Xaml'ın StartupUri propertisini set etmek yerine uygulamanın ana windowunu oluşturup gösterebiliriz.


Activated
Applicationdaki windowlardan bir tanesi aktif olduğu zaman ve başka bir uygulamadan bu uygulamaya geçiş yapıldığı zaman bu event tetiklenir.
Bu event ayrıca ilk defa window gösterildiği zamanda da Startup eventinden sonra tetiklenir.


Deactivated
Applicationdaki windowlardan bir tanesi aktif olmadığı zaman veya kapatıldığı zaman ya da application'dan başka bir uygulamaya geçiş yapıldığı zaman
bu event tetiklenir.


SessionEnding
Windows kapatılcağı ya da windowsta log off yapılacağı zaman eğer uygulama çalışıyorsa bu evente düşer. Windows'un kapatılmasını SessionEndingCancelEventArgs'ın
Cancel propertisi ile engelleyebiliriz. Eğer bu property'i true olarak set etmezsek, Application.ShutDown() fonksiyonu çağrılır ve uygulama kapatılır.



Exit
Application Run() metonundan dönülmeden önce, uygulama herhangi bir şekilde kapandığı ya da kapatıldığı zaman bu event çalışır. ExitEventArgs
parametresinde bulunan ApplicationExitCode propertisine değer vererek Run metodunun döndürdüğü int değerini değiştirebiliriz. Bu parametresinin
default değeri 0'dır.


DispatcherUnhandledException
Uygulama içinde (ana thread) ele almadığımız istisnai bir durum oluştuğu zaman istasnai durumun ele alınmasını sağlayan event'tir. Uygulama içinde
herhangi bir istisnai durum oluştuğunda istisnai durum, eğer bu event ele alınmışsa buraya düşer. Uygulamayı geliştiren kişi de, gelen istisnai duruma
göre çeşitli aktiviteler gerçekleştirebilir. Mesela önemli diye düşündüğü hataları loglayabilir. DispatcherUnhabdledException eventinde,
DispatcherUnhandledExceptionEventArgs parametresi gelmektedir. Bu parametrenin Handled adındaki propertisine true değeri verdiğimizde uygulama
çalışmaya devam eder. Bu parametrenin varsayılan değeri false'tur ve eğer bu varsayılan değeri değiştirmezsek windows kendi hata ekranını gösterir
ve uygulama kapanır. Bu örneğimizde kullanıcı düğmelere bastığında istisnai durum fırlatıyoruz. DispatcherUnhabdledException eventinde ise InvalidCastException
istisnai durum haricindeki diğer istisnai durumları ele alıp uygulamanın devam etmesini sağlıyoruz. InvalidCastException istisnai durumunda ise uygulamanın
kapatılacağı uyarısını verip uygulamayı kapatıyoruz.

Cs


Bu makalemizde Application sınıfının Startup, Activated, Deactivated, Exit, DispatcherUnhandledException, SessionEnding eventlerinin neler olduğunu,
nasıl tanımlandıklarını, nasıl uygulandıklarını ve ne işe yaradıklarını anlatmaya çalıştık. Bir sonraki makalemizde görüşmek üzere...

Sezgin Zeka
sezginzeka@gmail.com
demo