This documentation is archived and is not being maintained.

Application Class

Provides static methods and properties to manage an application, such as methods to start and stop an application, to process Windows messages, and properties to get information about an application. This class cannot be inherited.

Namespace:  System.Windows.Forms
Assembly:  System.Windows.Forms (in System.Windows.Forms.dll)

public sealed class Application

The Application class has methods to start and stop applications and threads, and to process Windows messages, as follows:

  • Run starts an application message loop on the current thread and, optionally, makes a form visible.

  • Exit or ExitThread stops a message loop.

  • DoEvents processes messages while your program is in a loop.

  • AddMessageFilter adds a message filter to the application message pump to monitor Windows messages.

  • IMessageFilter lets you stop an event from being raised or perform special operations before invoking an event handler.

This class has CurrentCulture and CurrentInputLanguage properties to get or set culture information for the current thread.

You cannot create an instance of this class.

The following code example lists numbers in a list box on a form. Each time you click button1, the application adds another number to the list.

The Main method calls Run to start the application, which creates the form, listBox1 and button1. When the user clicks button1, the button1_Click method displays a MessageBox. If the user clicks No on the MessageBox, the button1_Click method adds a number to the list. If the user clicks Yes, the application calls Exit to process all remaining messages in the queue and then to quit.


The call to Exit will fail in partial trust.

public class Form1 : Form
    public static void Main()
        // Start the application.
        Application.Run(new Form1());

    private Button button1;
    private ListBox listBox1;

    public Form1()
        button1 = new Button();
        button1.Left = 200;
        button1.Text = "Exit";
        button1.Click += new EventHandler(button1_Click);

        listBox1 = new ListBox();

    private void button1_Click(object sender, System.EventArgs e)
        int count = 1;
        // Check to see whether the user wants to exit the application. 
        // If not, add a number to the list box. 
        while (MessageBox.Show("Exit application?", "", 
            count += 1;

        // The user wants to exit the application.  
        // Close everything down.


Any public static (Shared in Visual Basic) members of this type are thread safe. Any instance members are not guaranteed to be thread safe.

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008 R2, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Windows CE, Windows Mobile for Smartphone, Windows Mobile for Pocket PC

The .NET Framework and .NET Compact Framework do not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.

.NET Framework

Supported in: 3.5, 3.0, 2.0, 1.1, 1.0

.NET Compact Framework

Supported in: 3.5, 2.0, 1.0