Merhaba, bu yazıda size C# ile Çalışmayı Durdurdu Hatasının Çözümünü göstereceğim.

Yukardaki hata programı setup haline getirip başka bir makinaya kurduğumuzda gözümüzden kaçan makina ile uyumsuz olduğu gibi durumlarda programin durmasına sebep olan bu hata direk çözümünü değil ama kurmak istediğiniz makinede neyin eksik olduğu veya hatanın sebebinin bir mesaj ile gösteren kodları paylaşacağım.
Kodlarımızı “Program.cs” bölümüne yazıyoruz. Kütüphanelerimiz projelerimze dahil ediyoruz.

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

Mevcut exe’de bir hata oluşması durumunda ortaya çıkacak hatanın programı durdurmaması gerekiyor. Bunun için de herhangi bir şekilde yakalanmamış olan exceptionları burada yakalıyoruz. Bu yazılımı kullanacak kişiler açısından önem teşkil etmekte.

[STAThread]
        static void Main()
        {
            AppDomain.CurrentDomain.UnhandledException +=
           new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException);
            Application.ThreadException +=
            new System.Threading.ThreadExceptionEventHandler(Application_ThreadException);
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new MainForm());
        }

Bu istisna işleme işlemi derleme zamanında  değil de çalışma zamanında oluşuyor bizim için. Bu önemli çünkü çok büyük projelerde çalışma zamanında oluşan davranışlar yavaşlığa neden olabilecek sıkıntıları da ortaya çıkarabiliyor.

 static void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e)
        {
            try
            {
                Exception ex = (Exception)e.ExceptionObject;
                MessageBox.Show(ex.Message + ex.StackTrace);
            }
            finally
            {
                Application.Exit();
            }
        }

Son olarak da uygulamanın çalıştığı esnada uygulamada tarafında çıkabilecek exceptionları kontrol etmemiz gerekiyor. Bu işlem için ThreadException delegateinden bir event türetiyoruz. Dilerseniz bu işlemin içerisinde yer alan kod blockları ile hatayı ekranda gösterebilir ya da direkt uygulamayı kapatabilirsiniz.

public static void Application_ThreadException(object sender, System.Threading.ThreadExceptionEventArgs e)
        {
            try
            {
                    MessageBox.Show(e.Exception.Message + e.Exception.StackTrace);
            }
            finally
            {
                Application.Exit();
            }
        }

kodların tamamı aşağıdaki gibidir.

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

namespace Excel_Oluştur
{
    static class Program
    {
        /// <summary>
        /// Uygulamanın ana girdi noktası.
        /// </summary>
        [STAThread]
        static void Main()
        {

            AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException);
            Application.ThreadException += new System.Threading.ThreadExceptionEventHandler(Application_ThreadException);
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);

            Application.Run(new Form1());

        }

        static void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e)
        {
            try
            {
                Exception ex = (Exception)e.ExceptionObject;
                MessageBox.Show(ex.Message + ex.StackTrace);
            }
            finally
            {
              //  Application.Exit();
            }
        }
        public static void Application_ThreadException(object sender, System.Threading.ThreadExceptionEventArgs e)
        {
            try
            {
                MessageBox.Show(e.Exception.Message + e.Exception.StackTrace);
            }
            finally
            {
                Application.Exit();
            }
        }
    }
}