Want to protect your cyber security and still get fast solutions? Ask a secure question today.Go Premium

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 723
  • Last Modified:

On Crash, Restart Application

I have a crawler I wrote that randomly crashes (crash comes from a window dll). When the program crashes, a window pops up saying "debug, send error report, etc..". I want to prevent that window from opening and restart the application, I am including the code I am currently attempting to use, but I have had zero luck, any ideas on how I can accomplish this?
public static Form1 form1;
        public static System.Threading.Timer tmr;
        public static System.Threading.Timer tmr2;
 
        [STAThread]
        static void Main()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            bool b = true;
 
            while (b == true)
            {
                try
                {
                    tmr = new System.Threading.Timer(new System.Threading.TimerCallback(onTimeout), null, 5000, 5000);
                    form1 = new Form1();
                    Application.Run(form1);
                }
                catch (Exception ex)
                {
 
                }
 
                System.Threading.Thread.Sleep(30000);
            }
        }
 
        
        public static void onTimeout(object obj)
        {
            tmr2 = new System.Threading.Timer(new System.Threading.TimerCallback(onTimeoutTimeout), null, 1000, System.Threading.Timeout.Infinite);
            bool a = form1.IsAlive();
            if (a == true)
            {
                tmr2.Dispose();
            }
        }
 
        public static void onTimeoutTimeout(object obj)
        {            
            form1.Dispose();
        }

Open in new window

0
addicktz
Asked:
addicktz
  • 2
4 Solutions
 
Gautham JanardhanCommented:
which frame work are u using ? 3.0 ?
0
 
margajet24IT Business AnalystCommented:
the application crashes because some exception were not handled.

If you are able to handle those exceptions, your app will not crash.

you can try to to put a try-catch block handling "Exception" in the catch. This would ensure that all kinds of exception would be caught/handled..
0
 
philipjonathanCommented:
Try adding this to the top of your Main:

static void Main()
{
   AppDomain currentDomain = AppDomain.CurrentDomain;
   currentDomain.UnhandledException += new UnhandledExceptionEventHandler(MyHandler);

   ...
}


And add this static method:

   static void MyHandler(object sender, UnhandledExceptionEventArgs args) {
      Exception e = (Exception) args.ExceptionObject;
      Console.WriteLine("MyHandler caught : " + e.Message);
   }

0
 
Gautham JanardhanCommented:
u can use the code posted above but
in 1.1 -> u can actaully stop the application from shutting down
in 2.0 and above -> u cant stop the application from closing but u can write code in the MyHandler method to start the application again.

static void MyHandler(object sender, UnhandledExceptionEventArgs args) {
      Exception e = (Exception) args.ExceptionObject;
      Console.WriteLine("MyHandler caught : " + e.Message);
      System.Diagnostics.Process.Start(System.Reflection.Assembly.GetEntryAssembly().Location);
   }

Open in new window

0

Featured Post

VIDEO: THE CONCERTO CLOUD FOR HEALTHCARE

Modern healthcare requires a modern cloud. View this brief video to understand how the Concerto Cloud for Healthcare can help your organization.

  • 2
Tackle projects and never again get stuck behind a technical roadblock.
Join Now