프로그래밍 기술/WPF

[WPF] 2.2 응용 프로그램 수명

언제나휴일 2016. 4. 19. 07:46
반응형

2.2 응용 프로그램 수명

 

 독립실행형 응용 프로그램의 수명에 관한 이벤트 발생 순서를 살펴봅시다.

 

 독립실행형 응용 프로그램의 수명 사이클은 Run 메서드로 시작하여 Startup 이벤트가 발생하고 창을 활성화하면 Activated 이벤트가 발생합니다. 창을 비활성화하면 Deactivated 이벤트가 발생, 다시 활성화하면 Activated 이벤트가 발생합니다. 종료할 때 Exit 이벤트가 발생한 후에 Shutdown 메서드를 수행하여 수명을 다합니다. 


응용 프로그램 수명 사이클

[그림 2.4] 응용 프로그램 수명 사이클 

 

 이를 코드로 확인하기 위해 App.xaml 에 이벤트 핸들러를 추가합시다.

 

App.xaml

<Application x:Class="FirstApplication.App"

    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

    StartupUri="Window1.xaml" Activated="Application_Activated"

    Deactivated="Application_Deactivated" Startup="Application_Startup"    Exit="Application_Exit" >

    <Application.Resources>

        

    </Application.Resources>

</Application> 

  

 App.xaml.cs 에는 이벤트가 발생 순서를 저장하는 Write 메서드를 추가합시다.

 

private void Write(string ename)

{

    FileStream fs = new FileStream("LifeCycle.txt", FileMode.Append);

      StreamWritersw = new StreamWriter(fs);

      sw.WriteLine(ename);

      sw.Close();

      fs.Close();

}

 각 이벤트 핸들러에서는 Write 메서드를 호출하여 이벤트 이름을 전달합시다.

private void Application_Activated(object sender, System.EventArgs e)

{

    Write("Activated");

}

 

App.xaml.cs

using System;

using System.Windows;

using System.IO;

using System.Windows.Threading;

 

namespace FirstApplication

{

    /// <summary>

    /// App.xaml에 대한 상호 작용 논리

    /// </summary>

    public partial class App : Application

    {

        private void Write(string ename)

        {

            FileStream fs = new FileStream("LifeCycle.txt", FileMode.Append);

            StreamWriter sw = new StreamWriter(fs);

            sw.WriteLine(ename);

            sw.Close();

            fs.Close();

        } 

        private void Application_Activated(object sender, EventArgs e)

        {

            Write("Activated");

        }

        private void Application_Deactivated(object sender, EventArgs e)

        {

            Write("Deactivated");

        } 

        private void Application_Startup(object sender, StartupEventArgs e)

        {

            Write("Startup");

        }

        private void Application_Exit(object sender, ExitEventArgs e)

        {

            Write("Exit");

        }

    }

}

  

 프로젝트를 빌드하여 실행한 후에 최소화하고 다시 최대화한 후에 종료해 보세요. 프로젝트 폴더의 [bin]=>[Debug]내에 LifeCycle.txt 파일을 열어보면 발생한 이벤트 순서를 알 수 있습니다.

 

LifeCycle.txt

Startup

Activated

Deactivated

Activated

Deactivated

Exit

  

 이외에도 WPF에서는 3D, 음성 화자와 음성 인식에 관련된기술이나 다른 응용 프로그램 형식간의 상호 운용성에 관련된 기술 및 전역화/지역화 기술, 보안 기술등을 제공하고 있습니다.

 

 이제 WPF를 사용하는 방법에 대해 조금씩 알아보기로 합시다.

반응형