/// <summary> /// 启动定时任务 /// </summary> internal DeployState Start() { if (IsCancel) { return(DeployState.Canceled); } ClientObject client = DeployInfo.Client; Log log = new Log { DeployIndex = DeployInfo.Index }; bool isLog = true; try { //Func<AutoCSer.Net.TcpServer.ReturnValue<Log>, bool> onLog = Server.GetLog(ref Identity, ref clientId) ?? Timer.onLog; AutoCSer.Net.TcpServer.ServerCallback <Log> onLog = client.OnLog ?? AutoCSer.Net.TcpServer.ServerCallback <Log> .Null.Default; log.Type = LogType.CreateBakDirectory; isLog |= onLog.Callback(log); (BakDirectory = new DirectoryInfo(Server.GetBakDirectoryName(DeployInfo.Index))).Create(); log.Type = LogType.OnCreateBakDirectory; isLog |= onLog.Callback(log); while (TaskIndex != DeployInfo.Tasks.Length && !IsCancel) { ClientTask.Task task = DeployInfo.Tasks.Array[TaskIndex]; log.Set(TaskIndex, task.Type); isLog |= onLog.Callback(log); DeployState state = task.Call(this); log.Type = LogType.OnRun; isLog |= onLog.Callback(log); if (state != DeployState.Success) { return(state); } ++TaskIndex; } return(DeployState.Success); } catch (Exception error) { Console.WriteLine(error.ToString()); Error = error; } finally { //Server.Clear(ref Identity); if (Error == null) { log.Type = LogType.Completed; } else { AutoCSer.Log.Pub.Log.Add(AutoCSer.Log.LogType.Error, Error); log.Type = LogType.Error; } //if (!(isLog |= onLog(log))) Server.ClearClient(ref clientId); } return(DeployState.Exception); }
/// <summary> /// 创建备份目录 /// </summary> /// <returns></returns> internal DirectoryInfo CreateBakDirectory() { if (BakDirectory == null) { (BakDirectory = new DirectoryInfo(Server.GetBakDirectoryName(DeployInfo.Index))).Create(); } DirectoryInfo bakDirectory = new DirectoryInfo(BakDirectory.fullName() + TaskIndex.toString()); bakDirectory.Create(); return(bakDirectory); }