KMRT BSRN

"Hiç kimsenin ilgisine ihtiyaç duymadığın gün olgunlaşırsın. Hiç kimseden beklentiye girmediğin gün yara almazsın. Ve hiç kimseye bağımlı kalmazsan kazanırsın." OSHO

VB,CS – ApplicationEvents.vb ve program.cs ile Uygulama Genel İşlemleri

Yorum bırakın


Uygulamalarımda ihtiyaç duyduğum işlemlerin başında tek bir noktadan uygulama login işlemlerini ve hata kaydetme işlemlerini yönetebilmektir. Login işlemi belki buna pek uymadı. Çünkü zaten tek bir login bölümü olur ve kullanıcı buradan uygulamaya giriş yapar. Peki şöyle bir durumda ne yapacaksınız. solution(çözümünüzde) projelerini yer almaktadır. Fakat bu projelerimizden biri genelde “Test Projemiz” olur. Bu durumda genelde test projesinde login bölümünü koymayız. Hızlı bir şekilde, bir test kullanıcı adı ve şifresi ile girilmiş gibi bilgisayarı kandıracak kodu “Form_Load” olayına yazarız yada bunu bir Class yapar ve Form açılışında bu Class’ın işlemesini sağlarız. Tabii ki test işlemlerimiz bazen tek form üzerinde yapabiliriz ama genelde Test projesi fazlaca form içerir ve bu form’ların her birinde bir test işlemi yer alır. Dolayısı ile bu form’ların her birinde login işlemini yapan class’ın çalışmasını isteriz..

Bu gibi durumlar bana baya can sıkıcı gelir ve buna genel bir çözüm bulmak isteriz. İşte burada yardımıza “ApplicationEvents.vb” Class’ı koşar. Bu .vb dosyasının oluşması için aşağıdaki adımları izlemelisiniz..

Projenize sağ tıklayıp “Properties” seçiniz..

Projenize sağ tıklayı Properties seçin.

“Application” sekmesinde “View Application Events” butonuna bastığınızda projenizde “ApplicationEvents.vb” class’ı “Partial” olarak oluşacaktır. Otomatik olarak ekrana gelecektir.

Application Events.vb dosyasının oluşturulması.

Proje içinde Application Events.vb

Bu class açıldığında artık yazının başında anlattığımız sorunlara bir çözüm olacağını umuyoruz. 🙂 Aslında biliyoruz ama çaktırmıyoruz 😉 ApplicationEvents.vb dosyası açıkken kod ekranının “ClassName” ve “MethodName” kısımlarındaki açılır listeyi kullanarak istediğimiz olay da işlem yapabiliriz.

Örneğin test projesinde uygulama başlangıç form’u hangi form seçilirse seçilsin. Login işlemini “MyApplication_Startup” metodu içinde yapabiliriz. Bu metod uygulama başladığında tetiklenir.

image

image

Örnek olarak böyle kodlayabiliriz..

Namespace My
    ' The following events are available for MyApplication:       
    ' Startup: Raised when the application starts, before the startup form is created.    
    ' Shutdown: Raised after all application forms are closed.  This event is not raised if the application terminates abnormally.    
    ' UnhandledException: Raised if the application encounters an unhandled exception.    
    ' StartupNextInstance: Raised when launching a single-instance application and the application is already active.
    ' NetworkAvailabilityChanged: Raised when the network connection is connected or disconnected.    
    Partial Friend Class MyApplication
        '' Uygulama ba?lang?c?nda..        
        Private Sub MyApplication_Startup(ByVal sender As Object, ByVal e As Microsoft.VisualBasic.ApplicationServices.StartupEventArgs) Handles Me.Startup
            '' Login i?lemleri..           
            UserInfo.UserName = "Murat"
            UserInfo.UserSurname = "Ba?eren"
        End Sub
    End Class
End Namespace

Uygulama içinde yönetilmeyen bir hata olduğunda bunu yönetmek içinde bu kısımdaki metodlardan yararlanabiliriz. Yönetilmeyen kod’dan kastımız bir “Try..Catch” yapısı ile kontrol edilmeyen kodlama kısımlarıdır. Onun içinde “MyApplication_UnhandledException” metodu işimizi görecektir.

'' Y?netilmeyen hatalarda..
Private Sub MyApplication_UnhandledException(ByVal sender As Object, ByVal e As Microsoft.VisualBasic.ApplicationServices.UnhandledExceptionEventArgs) Handles Me.UnhandledException
    MessageBox.Show("Hata olu?tu. Kaydedildi.", "Hata Olu?tu.", MessageBoxButtons.OK, MessageBoxIcon.Warning, MessageBoxDefaultButton.Button1)
    My.Application.Log.WriteException(e.Exception)
    e.ExitApplication = False
End Sub

Uygulamadan çıkarken bir işlem yapılabileceği gibi diğer metotları da kullanabilirsiniz.

Tabii ki bu işlemlerin Visual Basic tarafıydı. C# ‘ta ApplicationEvents.cs class’ını aramaya kalktığınızda projenizin özellikleri ekranında VB ‘deki gibi bir class’ı oluşturan buton bulamayacaksınız.. Bunun sebebi; C# ‘da o Class’ın zaten oluşmuş olmasıdır. İsmi de “Program.cs” dir.

Yukarıdaki işlemlerin benzerleri C# da aşağıdaki gibi kodlanarak elde edilir.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows.Forms;

namespace ApplicationEventsCS
{
    static class Program
    {

        [STAThread]
        static void Main() {
            // VB'deki MyApplication_Startup e?leni?i metot budur.            
            // Y?netilmeyen hatalar?n yakalanaca?? olay..            
            Application.ThreadException += new System.Threading.ThreadExceptionEventHandler(Application_ThreadException);
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new Form1());
        }

        static void Application_ThreadException(object sender, System.Threading.ThreadExceptionEventArgs e) {
            MessageBox.Show("Hata olu?tu. Kaydedildi.", "Hata Olu?tu.", MessageBoxButtons.OK, MessageBoxIcon.Warning, MessageBoxDefaultButton.Button1);
            Microsoft.VisualBasic.Logging.Log log = new Microsoft.VisualBasic.Logging.Log();
            log.WriteException(e.Exception);
        }
    }
}

“Microsoft.VisualBasic.Logging.Log” sınıfını kullanabilmek için “Microsoft.VisualBasic” referansını projenize eklemeyi unutmayınız..

Reklamlar

Yazar: K. Murat BAŞEREN, MBA, MCP

I am a senior software developer, MCP, consultant, blogger, former chemist and software trainer. My interests range from software developer to technology. I am also interested in web development, education, and coffee.

Bir Cevap Yazın

Aşağıya bilgilerinizi girin veya oturum açmak için bir simgeye tıklayın:

WordPress.com Logosu

WordPress.com hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Twitter resmi

Twitter hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Facebook fotoğrafı

Facebook hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Google+ fotoğrafı

Google+ hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Connecting to %s