■ Dispatcher 클래스 : UnhandledException 이벤트를 사용해 전역 예외 처리하기

------------------------------------------------------------------------------------------------------------------------


TestProject.zip


MainApplication.xaml.cs

 

 

using System.Windows;

using System.Windows.Threading;

 

namespace TestProject

{

    /// <summary>

    /// 메인 애플리케이션

    /// </summary>

    public partial class MainApplication : Application

    {

        //////////////////////////////////////////////////////////////////////////////////////////////////// Constructor

        ////////////////////////////////////////////////////////////////////////////////////////// Public

 

        #region 생성자 - MainApplication()

 

        /// <summary>

        /// 생성자

        /// </summary>

        public MainApplication()

        {

            Dispatcher.UnhandledExceptionFilter += Dispatcher_UnhandledExceptionFilter;

            Dispatcher.UnhandledException       += Dispatcher_UnhandledException;

        }

 

        #endregion

 

        //////////////////////////////////////////////////////////////////////////////////////////////////// Method

        ////////////////////////////////////////////////////////////////////////////////////////// Private

        //////////////////////////////////////////////////////////////////////////////// Event

 

        #region 디스패처 미처리 예외 필터 처리하기 - Dispatcher_UnhandledExceptionFilter(sender, e)

 

        /// <summary>

        /// 디스패처 미처리 예외 필터 처리하기

        /// </summary>

        /// <param name="sender">이벤트 발생자</param>

        /// <param name="e">이벤트 인자</param>

        private void Dispatcher_UnhandledExceptionFilter(object sender, DispatcherUnhandledExceptionFilterEventArgs e)

        {

            // true를 설정하면 응용 프로그램이 비정상 종료되지 않으나 false를 설정하면 응용 프로그램이 비정상 종료된다.

            e.RequestCatch = true;

        }

 

        #endregion

        #region 디스패처 미처리 예외 처리하기 - Dispatcher_UnhandledException(sender, e)

 

        /// <summary>

        /// 디스패처 미처리 예외 처리하기

        /// </summary>

        /// <param name="sender">이벤트 발생자</param>

        /// <param name="e">이벤트 인자</param>

        private void Dispatcher_UnhandledException(object sender, DispatcherUnhandledExceptionEventArgs e)

        {

            MessageBox.Show(e.Exception.ToString());

 

            e.Handled = true;

        }

 

        #endregion

    }

}

 

------------------------------------------------------------------------------------------------------------------------

Posted by 사용자 icodebroker
TAG

댓글을 달아 주세요