/// <summary> /// Main method /// </summary> static void Main() { mServer = new ServerClass(); OutputProjects(mServer.GetProjectList()); ThreadPool.QueueUserWorkItem(new WaitCallback(SocketThread)); ThreadPool.QueueUserWorkItem(new WaitCallback(WCFThread)); ThreadPool.QueueUserWorkItem(new WaitCallback(CheckClients)); ThreadPool.QueueUserWorkItem(new WaitCallback(SaveFile)); DisplayCommands(); while (Run) { string cmd = Console.ReadLine(); //string cmd = "l"; switch (cmd) { case "l": mServer.LoadFile(); break; case "s": mServer.SaveFile(); break; case "se": mServer.SaveFile(); Run = false; break; case "e": Run = false; break; default: Console.WriteLine("Wrong command!"); DisplayCommands(); break; } } }
/// <summary> /// Automatically saves the file every 5min /// </summary> /// <param name="stateInfo"></param> static void SaveFile(Object stateInfo) { Thread.Sleep(5 * TIMEOUT); DateTime lastSave = DateTime.Now; TimeSpan offset = new TimeSpan(0, 0, 0, 0, 300 * TIMEOUT); while (Run) { if (ProjectListChanged || DateTime.Now > lastSave + offset) { mServer.SaveFile(); } Thread.Sleep(10 * TIMEOUT); } }