Application.Run()/Application.Exit() (윈도우 애플리케이션을 생성하고, 폼을 클릭했을 때 애플리케이션을 종료하는 프로그램)

00·2025년 1월 2일

C#

목록 보기
112/149
using System;
using System.Windows.Forms; // 윈도우 폼 애플리케이션을 만들기 위한 네임스페이스
                            // 윈도우 애플리케이션을 만드는 데 필요한 클래스를 제공합니다.


/*
Application.Run() 메서드: 응용 프로그램을 시작하는 메서드
Application.Exit() 메서드: 응용 프로그램을 종료하는 메서드,
어느 곳에서든 Application.Exit() 메서드를 호출하면 해당 응용 프로그램을 종료합니다.
단, Exit() 메서드가 호출된다고 해서 응용 프로그램이 바로 종료되는 것은 아닙니다.
응용 프로그램이 갖고 있는 모든 윈도우를 닫은 뒤 Run() 메서드가 반환되도록 합니다.
따라서 Run() 메서드 뒤에 자원을 정리하는 코드를 넣어두면 응용 프로그램을 깨끗하게 종료시킬 수 있습니다.
 */


// 윈도우 애플리케이션을 생성하고, 폼을 클릭했을 때 애플리케이션을 종료하는 이벤트 처리기를 추가하는 코드
namespace UsingApplication
{
    class MainApp : Form // MainApp 클래스는 Form 클래스를 상속받습니다.
    {
        static void Main(string[] args)
        {
            MainApp form = new MainApp(); // MainApp의 새 인스턴스인 form를 생성합니다.


            // form 객체의 Click 이벤트에 익명 메서드를 추가합니다.
            // 익명 메서드는 폼이 클릭될 때 "Closing Window..." 메시지를 출력하고 애플리케이션을 종료합니다.
            // Form 클래스:
            // 여러 이벤트를 정의하고 있는데, 그중 Click 이벤트는 윈도우를 클릭했을때 발생하는 이벤트입니다.
            // 따라서 이 코드는 윈도우를 클릭하면 "Closing Window..." 메시지를 출력하고 Application.Exit()를 호출합니다.
            form.Click += new EventHandler(
                (sender, eventArgs) =>
                {
                    Console.WriteLine("Closing Window..."); 
                    Application.Exit();
                });

            Console.WriteLine("Starting Window Application..."); // "Starting Window Application..." 메시지를 출력합니다.
            Application.Run(form); // 폼을 표시하고 메시지 루프를 시작합니다.

            Console.WriteLine("Exiting Window Application..."); // "Exiting Window Application..." 메시지를 출력합니다.
        }
    }
}


/*
출력 결과

Starting Window Application...

// 폼을 클릭하면 다음 메시지가 출력됩니다.
Closing Window...
Exiting Window Application...
 */

코드 설명

using System;
using System.Windows.Forms; // 윈도우 폼 애플리케이션을 만들기 위한 네임스페이스

namespace UsingApplication
{
    class MainApp : Form // MainApp 클래스는 Form 클래스를 상속받습니다.
    {
        static void Main(string[] args)
        {
            MainApp form = new MainApp(); // MainApp의 새 인스턴스를 생성합니다.

            // 폼의 Click 이벤트에 익명 메서드를 추가합니다.
            // 익명 메서드는 폼이 클릭될 때 "Closing Window..." 메시지를 출력하고 애플리케이션을 종료합니다.
            form.Click += new EventHandler(
                (sender, eventArgs) => 
                {
                    Console.WriteLine("Closing Window...");
                    Application.Exit();
                });

            Console.WriteLine("Starting Window Application..."); // "Starting Window Application..." 메시지를 출력합니다.
            Application.Run(form); // 폼을 표시하고 메시지 루프를 시작합니다.

            Console.WriteLine("Exiting Window Application..."); // "Exiting Window Application..." 메시지를 출력합니다.
        }
    }
}

코드 설명

이 C# 코드는 System.Windows.Forms 네임스페이스를 사용하여 간단한 윈도우 애플리케이션을 만드는 예제입니다. 폼을 클릭하면 애플리케이션이 종료됩니다.

  • MainApp 클래스는 System.Windows.Forms.Form 클래스를 상속받아 윈도우 폼을 나타냅니다.
  • Main 메서드는 프로그램의 진입점입니다.
  • MainApp form = new MainApp();MainApp의 새 인스턴스를 생성합니다.
  • form.Click += new EventHandler(...)는 폼의 Click 이벤트에 익명 메서드를 추가합니다. 익명 메서드는 폼이 클릭될 때 "Closing Window..." 메시지를 출력하고 Application.Exit() 메서드를 호출하여 애플리케이션을 종료합니다.
  • Console.WriteLine("Starting Window Application...");는 "Starting Window Application..." 메시지를 출력합니다.
  • Application.Run(form);는 폼을 표시하고 메시지 루프를 시작합니다.
  • Console.WriteLine("Exiting Window Application...");는 "Exiting Window Application..." 메시지를 출력합니다.

추가 설명

  • System.Windows.Forms 네임스페이스는 윈도우 애플리케이션을 만드는 데 필요한 클래스를 제공합니다.
  • Form 클래스는 윈도우 폼을 나타내는 기본 클래스입니다.
  • Application 클래스는 윈도우 애플리케이션을 실행하고 관리하는 데 필요한 정적 메서드를 제공합니다.
  • EventHandler 델리게이트는 이벤트 핸들러를 나타냅니다.
  • 익명 메서드는 이름이 없는 메서드로, 델리게이트에 직접 할당할 수 있습니다.

출력 결과

Starting Window Application...
Closing Window...
Exiting Window Application...

참고

  • 폼을 클릭하면 Click 이벤트가 발생하고, 등록된 이벤트 핸들러가 호출됩니다.
  • Application.Exit() 메서드는 애플리케이션을 종료합니다.
  • Console.WriteLine("Exiting Window Application..."); 문은 애플리케이션이 종료된 후에는 실행되지 않습니다.

form.Click += new EventHandler(
(sender, eventArgs) =>
{
Console.WriteLine("Closing Window...");
Application.Exit();
});

여기서 "폼"은 윈도우 창을 의미합니다. 즉, 사용자가 실제로 보고 상호 작용하는 윈도우 창 그 자체를 말하는 것입니다.

폼 클래스는 윈도우 창을 만들기 위한 설계도이고, 폼은 그 설계도를 바탕으로 만들어진 실제 창입니다.

이 코드는 폼 클래스(MainApp)의 인스턴스인 form 객체를 생성하고, 이 form 객체에 클릭 이벤트 핸들러를 추가하는 코드입니다.

form.Click += ...form 객체의 Click 이벤트에 이벤트 핸들러를 추가하는 것을 의미합니다. 즉, form 윈도우 창을 클릭했을 때 어떤 동작을 수행할지 정의하는 것입니다.

new EventHandler(...)는 이벤트 핸들러를 생성하는 부분입니다. 이벤트 핸들러는 이벤트가 발생했을 때 실행될 메서드를 나타냅니다.

(sender, eventArgs) => { ... }는 익명 메서드로, 이벤트 핸들러로 사용될 메서드를 정의합니다. 이 익명 메서드는 sendereventArgs라는 두 개의 매개변수를 가지고 있으며, 폼이 클릭될 때 실행됩니다.

Console.WriteLine("Closing Window...");는 콘솔에 "Closing Window..." 메시지를 출력합니다.

Application.Exit();는 애플리케이션을 종료합니다.

즉, 이 코드는 form 윈도우 창을 클릭했을 때 "Closing Window..." 메시지를 출력하고 애플리케이션을 종료하는 이벤트 핸들러를 추가하는 코드입니다.


Console.WriteLine("Starting Window Application...");
Application.Run(form);

이 코드는 윈도우 애플리케이션을 실행하고 화면에 표시하는 역할을 합니다. 마치 컴퓨터를 켜서 운영체제를 시작하는 것과 비슷합니다.

Console.WriteLine("Starting Window Application...");는 콘솔 창에 "Starting Window Application..."이라는 메시지를 출력합니다. 이는 윈도우 애플리케이션이 시작되었음을 알려주는 역할을 합니다.

Application.Run(form);form 객체를 화면에 표시하고, 윈도우 메시지 루프를 시작합니다.

  • form 객체는 앞서 생성된 MainApp 클래스의 인스턴스로, 윈도우 창을 나타냅니다.
  • Application.Run() 메서드는 form 객체를 화면에 표시하고, 사용자의 입력을 받아 처리하는 메시지 루프를 시작합니다.

메시지 루프는 윈도우 애플리케이션의 핵심적인 부분입니다. 윈도우 애플리케이션은 사용자의 입력을 받아 처리하는 이벤트 기반 프로그램입니다. 메시지 루프는 운영체제에서 발생하는 다양한 이벤트(마우스 클릭, 키보드 입력, 창 크기 변경 등)를 받아서 해당 이벤트를 처리할 수 있도록 윈도우 폼에 전달합니다.

Application.Run() 메서드는 윈도우 애플리케이션이 종료될 때까지 계속 실행됩니다. 즉, 사용자가 윈도우 창을 닫거나 Application.Exit() 메서드를 호출할 때까지 메시지 루프가 실행됩니다.

이 코드는 윈도우 애플리케이션을 실행하고 화면에 표시하는 데 필수적인 역할을 합니다.


윈도우 애플리케이션 vs 윈도우 창 vs 윈도우 폼

윈도우 애플리케이션, 윈도우 창, 윈도우 폼은 모두 윈도우 운영체제에서 실행되는 프로그램을 의미하지만, 각 용어는 조금씩 다른 의미를 가지고 있습니다.

윈도우 애플리케이션은 윈도우 운영체제에서 실행되는 모든 프로그램을 포괄적으로 의미합니다. 메모장, 계산기, 게임 등 윈도우에서 실행되는 모든 프로그램이 윈도우 애플리케이션입니다.

윈도우 창은 윈도우 애플리케이션의 사용자 인터페이스(UI)를 구성하는 요소 중 하나입니다. 윈도우 창은 제목 표시줄, 메뉴, 툴바, 작업 영역 등을 포함하며, 사용자는 윈도우 창을 통해 애플리케이션과 상호 작용합니다.

윈도우 폼은 .NET Framework에서 윈도우 애플리케이션의 UI를 구축하기 위한 기술입니다. 윈도우 폼은 컨트롤(버튼, 텍스트 박스 등)을 사용하여 사용자 인터페이스를 구성하고, 이벤트 처리를 통해 사용자 상호 작용을 처리합니다. 윈도우 폼 애플리케이션은 하나 이상의 윈도우 창을 가질 수 있습니다.

즉, 윈도우 애플리케이션은 가장 넓은 의미이고, 윈도우 창은 윈도우 애플리케이션의 UI 요소, 윈도우 폼은 윈도우 애플리케이션을 구축하기 위한 기술입니다.

  • 윈도우 애플리케이션 > 윈도우 창
  • 윈도우 애플리케이션 > 윈도우 폼
  • 윈도우 폼 ≠ 윈도우 창 (윈도우 폼 애플리케이션은 여러 개의 윈도우 창을 가질 수 있음)

윈도우 애플리케이션이 vs 응용 프로그램

윈도우 애플리케이션과 응용 프로그램은 같은 의미입니다.

'애플리케이션'은 영어 'Application'의 우리말 표현이고, 윈도우 운영체제에서 실행되는 프로그램을 뜻합니다.

'응용 프로그램'은 '애플리케이션'을 좀 더 풀어서 쓴 표현이라고 생각하면 됩니다.

넓은 의미에서 애플리케이션은 컴퓨터에서 실행되는 모든 소프트웨어를 의미하지만, 일반적으로는 워드 프로세서, 웹 브라우저, 게임 등과 같이 사용자가 직접 사용하는 프로그램을 뜻합니다.

윈도우 애플리케이션은 윈도우 운영체제에서 실행되도록 설계된 프로그램입니다. 윈도우 애플리케이션은 .NET Framework, WPF, Win32 API 등 다양한 기술을 사용하여 개발할 수 있습니다.

  • 윈도우 애플리케이션 = 응용 프로그램
  • 윈도우 애플리케이션 = 윈도우에서 실행되는 모든 프로그램

윈도우 애플리케이션, 응용 프로그램, 윈도우 앱

윈도우 애플리케이션, 응용 프로그램, 윈도우 앱은 모두 윈도우 운영체제에서 실행되는 프로그램을 의미하지만, 각 용어는 조금씩 다른 뉘앙스를 가지고 있습니다.

윈도우 애플리케이션은 윈도우 운영체제에서 실행되는 모든 프로그램을 포괄적으로 의미합니다. 메모장, 계산기, 게임 등 윈도우에서 실행되는 모든 프로그램이 윈도우 애플리케이션입니다.

응용 프로그램은 윈도우 애플리케이션과 거의 같은 의미이지만, 좀 더 일반적인 용어입니다. 윈도우뿐만 아니라 macOS, Linux 등 다른 운영체제에서 실행되는 프로그램도 포함할 수 있습니다.

윈도우 앱은 윈도우 8 이후에 도입된 새로운 유형의 애플리케이션입니다. 윈도우 스토어에서 배포되며, 터치 스크린 환경에 최적화된 UI를 제공합니다. 윈도우 앱은 기존의 윈도우 애플리케이션과는 다른 실행 환경과 API를 사용합니다.

즉, 윈도우 애플리케이션과 응용 프로그램은 거의 같은 의미이고, 윈도우 앱은 윈도우 8 이후에 도입된 새로운 유형의 애플리케이션입니다.

  • 윈도우 애플리케이션 ≈ 응용 프로그램
  • 윈도우 앱 ≠ 윈도우 애플리케이션, 응용 프로그램

윈도우 OS = 윈도우 운영체제

윈도우 OS는 윈도우 운영체제를 말하는 거예요. OS는 Operating System의 약자로, 컴퓨터를 사용할 수 있도록 해주는 가장 기본적인 소프트웨어입니다.

윈도우 OS는 마이크로소프트에서 만든 운영체제로, 컴퓨터를 사용하는 사람들이 가장 많이 사용하는 운영체제 중 하나입니다. 윈도우 OS는 컴퓨터를 켜면 보이는 화면, 프로그램을 실행하고 파일을 관리하는 기능, 인터넷에 연결하는 기능 등을 제공합니다.

윈도우 OS 외에도 macOS, Linux, Android, iOS 등 다양한 운영체제가 있습니다.


Application.Run(form); // 폼을 표시하고 메시지 루프를 시작합니다.

Application.Run(form);은 윈도우 폼 애플리케이션을 실행하고 윈도우 메시지 루프를 시작하는 역할을 합니다.

Application.Run() 메서드

  • System.Windows.Forms 네임스페이스의 Application 클래스에 정의된 정적 메서드입니다.
  • 윈도우 폼을 화면에 표시하고, 메시지 루프를 시작하여 애플리케이션을 실행합니다.
  • form 매개변수는 화면에 표시할 윈도우 폼 객체입니다.

메시지 루프

  • 윈도우 운영체제는 애플리케이션에 발생하는 이벤트(마우스 클릭, 키보드 입력, 창 크기 변경 등)를 메시지 형태로 전달합니다.
  • 메시지 루프는 이러한 메시지를 받아서 해당 이벤트를 처리할 수 있도록 윈도우 폼에 전달합니다.
  • 메시지 루프는 애플리케이션이 종료될 때까지 계속 실행됩니다.

Application.Run(form)의 동작

  1. form 객체를 화면에 표시합니다.
  2. 메시지 루프를 시작합니다.
  3. 메시지 루프는 운영체제에서 전달되는 메시지를 받아서 form 객체에 전달합니다.
  4. form 객체는 전달된 메시지를 처리합니다. (예: 마우스 클릭 이벤트 처리)
  5. 애플리케이션이 종료될 때까지 2~4번 과정을 반복합니다.

요약

Application.Run(form)은 윈도우 폼 애플리케이션을 실행하고, 메시지 루프를 통해 사용자 입력을 처리하는 핵심적인 역할을 합니다.

0개의 댓글