void run() { while (true) { hasError = false; print("Application start."); taskDownload.start(); taskUpload.start(); taskExecute.start(); taskKill.start(); taskSQL.start(); print("All tasks started. Wait for completion..."); while (!hasError) { Thread.Sleep(500); } Buzzer.Beep(); print("Auto revive in " + reviveTime + " seconds."); int reviveCount = reviveTime; while (reviveCount >= 0) { string msg = "\rAuto revive in " + reviveCount + " seconds"; string dots; if (reviveCount % 3 == 0) { dots = "..."; } else if (reviveCount % 3 == 1) { dots = ".."; } else { dots = "."; } Console.Write("\r" + new string(' ', Console.WindowWidth - 1) + "\r"); Console.Write(msg + dots); Thread.Sleep(1000); reviveCount--; } isTerminating = false; if (reviveFromDead) { print("The program revive now."); continue; } else { break; } } print("Press <Enter> to exit."); Console.ReadLine(); }