/// <summary> /// 解锁超时任务 /// </summary> private void UnLockTimeOutTask() { try { //获取锁定的任务 List <TaskInfo> _TaskInfoList = ProgramTaskDBManager.GetTaskByLocked("1"); if (_TaskInfoList != null && _TaskInfoList.Count > 0) { foreach (TaskInfo _TaskInfo in _TaskInfoList) { double size = _TaskInfo.data.size; try { size = (size / 1024.0); } catch { size = 0; } double timesize = Globals.TaskExecuteTime * size * Globals.TaskExecuteOutThreshold; if (DateTime.Compare(_TaskInfo.TaskDownloadDateTime.AddSeconds(timesize), DateTime.Now) < 0) { AppendMessageLine("任务超时!"); LogService.Write("任务超时!"); #region //解锁锁定的任务 if (ProgramTaskDBManager.LockTaskByID(_TaskInfo.data.task_id, false)) { AppendMessageLine("解除锁定超时任务成功!"); LogService.Write("解除锁定超时任务成功!"); //ProgramTaskDBManager.InsertIntoTaskDetail(CreateTaskDetail(_TaskInfo.data.task_id, "解除锁定", 1, "解除锁定任务成功", DateTime.Now)); } else { AppendMessageLine("解除锁定超时任务失败, 任务ID:" + _TaskInfo.data.task_id); LogService.Write("解除锁定超时任务失败, 任务ID:" + _TaskInfo.data.task_id); } #endregion } } } } catch (Exception ex) { throw; } }
/// <summary> /// 是否锁定 /// </summary> /// <param name="task_id"></param> /// <returns></returns> private bool IsLocked(string task_id) { try { TaskInfo _TaskInfo = ProgramTaskDBManager.GetTaskByTaskID(task_id); if (_TaskInfo.Islocked == 1) { return(true); } else { return(false); } } catch (Exception) { return(false); } }
/// <summary> /// 获取任务,添加任务 /// </summary> private void InsertTask() { try { if (txtInfo.Text.Length > txtInfo.MaxLength) { txtInfo.Text = ""; } Application.DoEvents(); if (!isStart) { AppendMessageLine("任务停止!"); return; } //解锁超时任务 UnLockTimeOutTask(); if (ProgramTaskDBManager.IsExistUnDoTask()) { LogService.Write("有未完成任务..."); AppendMessageLine("有未完成任务..."); return; } AppendMessageLine("开始获取任务"); TaskInfo _TaskInfo = Globals.TingTingAPIService.GetTask(); if (_TaskInfo.TaskState == -1) { LogService.Write("获取任务失败,错误信息:" + _TaskInfo.ErrorMsg); AppendMessageLine("获取任务失败,错误信息:" + _TaskInfo.ErrorMsg); return; } else { if (_TaskInfo.data == null || _TaskInfo.data.task_id == null || _TaskInfo.data.task_id.Length <= 0) { if (Globals.IsFree) { AppendMessageLine("未获取到新任务!"); } Globals.IsFree = true; Application.DoEvents(); return; } Globals.IsFree = false; LogService.Write("获取任务成功,音频名称:" + _TaskInfo.data.audio_name); AppendMessageLine("获取任务成功,音频名称:" + _TaskInfo.data.audio_name); if (ProgramTaskDBManager.IsExistTask(_TaskInfo.data.task_id)) { LogService.Write("任务已存在,任务ID:" + _TaskInfo.data.task_id); AppendMessageLine("任务已存在,任务ID:" + _TaskInfo.data.task_id); TaskInfo _TemTaskInfo = ProgramTaskDBManager.GetTaskByTaskID(_TaskInfo.data.task_id); if (_TemTaskInfo != null && _TemTaskInfo.TaskState != 0) { #region //反馈回调 string error = ""; if (_TemTaskInfo.data.detail_report == null) { _TemTaskInfo.data.detail_report = ""; } if (_TemTaskInfo.error == null) { _TemTaskInfo.error = ""; } if (Globals.TingTingAPIService.TaskDealCallback(_TemTaskInfo, out error)) { AppendMessageLine("请求回调成功!"); LogService.Write("请求回调成功!"); ProgramTaskDBManager.InsertIntoTaskDetail(CreateTaskDetail(_TemTaskInfo.data.task_id, "回调", 1, "请求回调成功", DateTime.Now)); } else { AppendMessageLine("请求回调失败,错误信息:" + error); LogService.Write("请求回调失败,错误信息:" + error); ProgramTaskDBManager.InsertIntoTaskDetail(CreateTaskDetail(_TemTaskInfo.data.task_id, "回调", -1, "请求回调失败,错误信息:" + error, DateTime.Now)); } #endregion } } else { if (ProgramTaskDBManager.InsertIntoTask(_TaskInfo)) { LogService.Write("任务添加成功,任务ID:" + _TaskInfo.data.task_id); AppendMessageLine("任务添加成功,任务ID:" + _TaskInfo.data.task_id); } else { LogService.Write("任务添加失败,任务ID:" + _TaskInfo.data.task_id); AppendMessageLine("任务添加失败,任务ID:" + _TaskInfo.data.task_id); } } } } catch (Exception ex) { AppendMessageLine("程序错误,方法:InsertTask 错误信息:" + ex.Message); LogService.WriteErr("程序错误,方法:InsertTask 错误信息:" + ex.Message); } finally { Globals.ExecuteStopDate = DateTime.Now; ProgramTaskCommonService.Common.FlushMemory(); } }