Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • World
  • Users
  • Groups
Skins
  • Light
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
Code Project
  1. Home
  2. General Programming
  3. C#
  4. Application.Exit

Application.Exit

Scheduled Pinned Locked Moved C#
jsonquestion
21 Posts 5 Posters 2 Views 1 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • P PIEBALDconsult

    I never use Application.Exit; I just call the form's Close method.

    G Offline
    G Offline
    George_George
    wrote on last edited by
    #11

    Thanks PIEBALDconsult, I just want to confirm in console and Windows service application, we should not use Application.Exit to terminate the process, right? regards, George

    1 Reply Last reply
    0
    • G George_George

      Yes, Luc! Currently, I am using Environment.Exit (-1). And I want to keep on learning new things. Is Environment.Exit safe that no resource leak will occur (and all expected exception handler and finally blocks are executed)? regards, George

      L Offline
      L Offline
      Luc Pattyn
      wrote on last edited by
      #12

      Hi George, 1. yes Environment.Exit() will clean up and avoid leaks. Everything that terminates a process will clean up the resources allocated by the process itself, that is basic functionality in Windows itself. Nevertheless, it is good practice to do it explicitly; and you should clean up if your program has two or more parts that are rather independent, so after part 1 you could and should clean up before starting part 2, so part 2 gets a maximum of available resources (memory, handles, whatever) and hence gets the best performance. 2.

      George_George wrote:

      finally blocks are executed)?

      Why don't you try it? you really should replace some of your questions by looking it up yourself and/or testing it yourself. Here is enough code to figure it out (put it in e.g. a button click handler):

      try {
      Application.Exit();
      } finally {
      StreamWriter tw=File.CreateText("finally.txt");
      tw.Close();
      }

      :)

      Luc Pattyn [Forum Guidelines] [My Articles]


      This month's tips: - before you ask a question here, search CodeProject, then Google; - the quality and detail of your question reflects on the effectiveness of the help you are likely to get; - use PRE tags to preserve formatting when showing multi-line code snippets.


      G 1 Reply Last reply
      0
      • L Luc Pattyn

        Hi George, 1. yes Environment.Exit() will clean up and avoid leaks. Everything that terminates a process will clean up the resources allocated by the process itself, that is basic functionality in Windows itself. Nevertheless, it is good practice to do it explicitly; and you should clean up if your program has two or more parts that are rather independent, so after part 1 you could and should clean up before starting part 2, so part 2 gets a maximum of available resources (memory, handles, whatever) and hence gets the best performance. 2.

        George_George wrote:

        finally blocks are executed)?

        Why don't you try it? you really should replace some of your questions by looking it up yourself and/or testing it yourself. Here is enough code to figure it out (put it in e.g. a button click handler):

        try {
        Application.Exit();
        } finally {
        StreamWriter tw=File.CreateText("finally.txt");
        tw.Close();
        }

        :)

        Luc Pattyn [Forum Guidelines] [My Articles]


        This month's tips: - before you ask a question here, search CodeProject, then Google; - the quality and detail of your question reflects on the effectiveness of the help you are likely to get; - use PRE tags to preserve formatting when showing multi-line code snippets.


        G Offline
        G Offline
        George_George
        wrote on last edited by
        #13

        Cool, Luc! Finally block is not executed. I think the reason is, process is terminated by Environment.Exit, and resources are released by Windows, so there is no need to execute finally block, right? regards, George

        L 1 Reply Last reply
        0
        • G George_George

          Cool, Luc! Finally block is not executed. I think the reason is, process is terminated by Environment.Exit, and resources are released by Windows, so there is no need to execute finally block, right? regards, George

          L Offline
          L Offline
          Luc Pattyn
          wrote on last edited by
          #14

          Hi George,

          George_George wrote:

          Finally block is not executed

          :confused::confused: It was executed in my experiment, with the code snippet in a button click handler, the file got generated in \bin\debug folder. :)

          Luc Pattyn [Forum Guidelines] [My Articles]


          This month's tips: - before you ask a question here, search CodeProject, then Google; - the quality and detail of your question reflects on the effectiveness of the help you are likely to get; - use PRE tags to preserve formatting when showing multi-line code snippets.


          G 1 Reply Last reply
          0
          • L Luc Pattyn

            Hi George,

            George_George wrote:

            Finally block is not executed

            :confused::confused: It was executed in my experiment, with the code snippet in a button click handler, the file got generated in \bin\debug folder. :)

            Luc Pattyn [Forum Guidelines] [My Articles]


            This month's tips: - before you ask a question here, search CodeProject, then Google; - the quality and detail of your question reflects on the effectiveness of the help you are likely to get; - use PRE tags to preserve formatting when showing multi-line code snippets.


            G Offline
            G Offline
            George_George
            wrote on last edited by
            #15

            Hi Luc, can you post your code please? Finally block is not executed, here is my code.

            using System;
            using System.Collections.Generic;
            using System.Linq;
            using System.Text;

            namespace ConsoleApplication2
            {
            class Program
            {

                static void Main(string\[\] args)
                {
                    try
                    {
                        Environment.Exit(-1);
                    }
                    finally
                    {
                        Console.WriteLine("Hello world");
                    }
                }
            }
            

            }

            regards, George

            L 1 Reply Last reply
            0
            • G George_George

              Hi Luc, can you post your code please? Finally block is not executed, here is my code.

              using System;
              using System.Collections.Generic;
              using System.Linq;
              using System.Text;

              namespace ConsoleApplication2
              {
              class Program
              {

                  static void Main(string\[\] args)
                  {
                      try
                      {
                          Environment.Exit(-1);
                      }
                      finally
                      {
                          Console.WriteLine("Hello world");
                      }
                  }
              }
              

              }

              regards, George

              L Offline
              L Offline
              Luc Pattyn
              wrote on last edited by
              #16

              Hi George, you already have my code[^]. I am not surprised your code snippet is fooling you, after all you ask it to perform console I/O where the application is exiting, hence forms, consoles, and other UI stuff is winding down. The file system however remains alive to the very end of the app. :)

              Luc Pattyn [Forum Guidelines] [My Articles]


              This month's tips: - before you ask a question here, search CodeProject, then Google; - the quality and detail of your question reflects on the effectiveness of the help you are likely to get; - use PRE tags to preserve formatting when showing multi-line code snippets.


              G 1 Reply Last reply
              0
              • L Luc Pattyn

                Hi George, you already have my code[^]. I am not surprised your code snippet is fooling you, after all you ask it to perform console I/O where the application is exiting, hence forms, consoles, and other UI stuff is winding down. The file system however remains alive to the very end of the app. :)

                Luc Pattyn [Forum Guidelines] [My Articles]


                This month's tips: - before you ask a question here, search CodeProject, then Google; - the quality and detail of your question reflects on the effectiveness of the help you are likely to get; - use PRE tags to preserve formatting when showing multi-line code snippets.


                G Offline
                G Offline
                George_George
                wrote on last edited by
                #17

                Sorry Luc, Here is your code, the finally blocked is not executed. Could you reproduce? I am confused. :-)

                using System;
                using System.IO;
                using System.Collections.Generic;
                using System.Linq;
                using System.Text;

                namespace ConsoleApplication2
                {
                class Program
                {

                    static void Main(string\[\] args)
                    {
                        try
                        {
                            Environment.Exit(-1);
                        }
                        finally
                        {
                            StreamWriter tw = File.CreateText("finally.txt");
                            tw.Close();
                        }
                    }
                }
                

                }

                regards, George

                L 1 Reply Last reply
                0
                • G George_George

                  Sorry Luc, Here is your code, the finally blocked is not executed. Could you reproduce? I am confused. :-)

                  using System;
                  using System.IO;
                  using System.Collections.Generic;
                  using System.Linq;
                  using System.Text;

                  namespace ConsoleApplication2
                  {
                  class Program
                  {

                      static void Main(string\[\] args)
                      {
                          try
                          {
                              Environment.Exit(-1);
                          }
                          finally
                          {
                              StreamWriter tw = File.CreateText("finally.txt");
                              tw.Close();
                          }
                      }
                  }
                  

                  }

                  regards, George

                  L Offline
                  L Offline
                  Luc Pattyn
                  wrote on last edited by
                  #18

                  Hi George, my example was on Application.Exit() which causes an Application.Run() to return, I guess asynchronously by sending a Windows message or something; so the thread has the opportunity to first execute the finally block. Your test was on Environment.Exit() which, from your observation, seems to cause an immediate exit. I trust the exact behavior is hidden somewhere in the documentation. :)

                  Luc Pattyn [Forum Guidelines] [My Articles]


                  This month's tips: - before you ask a question here, search CodeProject, then Google; - the quality and detail of your question reflects on the effectiveness of the help you are likely to get; - use PRE tags to preserve formatting when showing multi-line code snippets.


                  G 1 Reply Last reply
                  0
                  • L Luc Pattyn

                    Hi George, my example was on Application.Exit() which causes an Application.Run() to return, I guess asynchronously by sending a Windows message or something; so the thread has the opportunity to first execute the finally block. Your test was on Environment.Exit() which, from your observation, seems to cause an immediate exit. I trust the exact behavior is hidden somewhere in the documentation. :)

                    Luc Pattyn [Forum Guidelines] [My Articles]


                    This month's tips: - before you ask a question here, search CodeProject, then Google; - the quality and detail of your question reflects on the effectiveness of the help you are likely to get; - use PRE tags to preserve formatting when showing multi-line code snippets.


                    G Offline
                    G Offline
                    George_George
                    wrote on last edited by
                    #19

                    Thanks Luc, I think for console and Windows Service application, we should never use Application.Exit, right? regards, George

                    L 1 Reply Last reply
                    0
                    • G George_George

                      Thanks Luc, I think for console and Windows Service application, we should never use Application.Exit, right? regards, George

                      L Offline
                      L Offline
                      Luc Pattyn
                      wrote on last edited by
                      #20

                      Application.Exit() causes Application.Run() to return, both make sense in windows apps only. this has been asked and answered many times in the last couple of days, it is not going to change any time soon ... :)

                      Luc Pattyn [Forum Guidelines] [My Articles]


                      This month's tips: - before you ask a question here, search CodeProject, then Google; - the quality and detail of your question reflects on the effectiveness of the help you are likely to get; - use PRE tags to preserve formatting when showing multi-line code snippets.


                      G 1 Reply Last reply
                      0
                      • L Luc Pattyn

                        Application.Exit() causes Application.Run() to return, both make sense in windows apps only. this has been asked and answered many times in the last couple of days, it is not going to change any time soon ... :)

                        Luc Pattyn [Forum Guidelines] [My Articles]


                        This month's tips: - before you ask a question here, search CodeProject, then Google; - the quality and detail of your question reflects on the effectiveness of the help you are likely to get; - use PRE tags to preserve formatting when showing multi-line code snippets.


                        G Offline
                        G Offline
                        George_George
                        wrote on last edited by
                        #21

                        Thanks Luc, Question answered. regards, George

                        1 Reply Last reply
                        0
                        Reply
                        • Reply as topic
                        Log in to reply
                        • Oldest to Newest
                        • Newest to Oldest
                        • Most Votes


                        • Login

                        • Don't have an account? Register

                        • Login or register to search.
                        • First post
                          Last post
                        0
                        • Categories
                        • Recent
                        • Tags
                        • Popular
                        • World
                        • Users
                        • Groups