完善功能
This commit is contained in:
parent
c3a4faae8f
commit
cf25e63de7
4 changed files with 29 additions and 10 deletions
2
.gitignore
vendored
2
.gitignore
vendored
|
@ -1,5 +1,7 @@
|
|||
src/bin
|
||||
src/.vs
|
||||
src/obj
|
||||
src/lib
|
||||
src/download
|
||||
src/.config
|
||||
*.user
|
|
@ -91,9 +91,9 @@ namespace iFileProxy.Controllers
|
|||
}
|
||||
|
||||
// 如果任务正在运行,先尝试中断
|
||||
if (taskInfo.Status == TaskState.Running)
|
||||
if (taskInfo.Status == TaskState.Running && _taskManager.GetRunningTaskInfo(taskId) != null)
|
||||
{
|
||||
_taskManager.TryKillTask(taskInfo);
|
||||
_taskManager.TryKillTask(_taskManager.GetRunningTaskInfo(taskId));
|
||||
}
|
||||
|
||||
// 删除任务记录
|
||||
|
@ -165,7 +165,7 @@ namespace iFileProxy.Controllers
|
|||
try
|
||||
{
|
||||
// 先获取任务信息
|
||||
var taskInfo = _dbGateService.GetTaskDetail(taskId);
|
||||
var taskInfo = _taskManager.GetRunningTaskInfo(taskId);
|
||||
if (taskInfo == null)
|
||||
{
|
||||
return Ok(new CommonRsp
|
||||
|
|
|
@ -324,7 +324,7 @@ namespace iFileProxy.Services
|
|||
sqlCmd.Parameters.AddWithValue("@tid", taskInfo.TaskId);
|
||||
if (sqlCmd.ExecuteNonQuery() >= 1)
|
||||
{
|
||||
_logger.Debug($"Task: {taskInfo.TaskId} Status Change to {taskInfo.Status}");
|
||||
_logger.Information($"Task: {taskInfo.TaskId} Status Change to {taskInfo.Status}");
|
||||
return true;
|
||||
}
|
||||
else
|
||||
|
|
|
@ -237,7 +237,6 @@ namespace iFileProxy.Services
|
|||
{
|
||||
_logger.Error($"task: {taskInfo.TaskId} 进程退出状态异常 ExitCode: {aria2c.ExitCode}");
|
||||
taskInfo.Status = TaskState.Error;
|
||||
_dbGateService.UpdateTaskStatus(taskInfo);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -341,6 +340,16 @@ namespace iFileProxy.Services
|
|||
return new ServerTaskLoadInfo { Queuing = _pendingTasks.Count , Running = _runningTasks.Count};
|
||||
}
|
||||
|
||||
|
||||
public TaskInfo? GetRunningTaskInfo(string taskId)
|
||||
{
|
||||
if (_runningTasks.TryGetValue(taskId, out var taskInfo))
|
||||
{
|
||||
return taskInfo;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public void TryKillTask(TaskInfo taskInfo)
|
||||
{
|
||||
try
|
||||
|
@ -349,13 +358,20 @@ namespace iFileProxy.Services
|
|||
if (_runningTasks.TryGetValue(taskInfo.TaskId, out var runningTask))
|
||||
{
|
||||
_logger.Information($"正在尝试中断任务: {taskInfo.TaskId}");
|
||||
|
||||
// 从运行任务字典中移除
|
||||
_runningTasks.Remove(taskInfo.TaskId);
|
||||
|
||||
// 更新任务状态为已取消
|
||||
taskInfo.Status = TaskState.Canceled;
|
||||
_dbGateService.UpdateTaskStatus(taskInfo);
|
||||
|
||||
// 如果存在进程则kill掉
|
||||
foreach (var p in Process.GetProcesses())
|
||||
{
|
||||
if (p.Id == taskInfo.Process.Id)
|
||||
p.Kill();
|
||||
}
|
||||
|
||||
// 从运行任务字典中移除
|
||||
_runningTasks.Remove(taskInfo.TaskId);
|
||||
|
||||
|
||||
// 删除未完成的文件
|
||||
var filePath = Path.Combine(_appConfig.DownloadOptions.SavePath, taskInfo.FileName);
|
||||
|
@ -382,7 +398,8 @@ namespace iFileProxy.Services
|
|||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
_logger.Error($"中断任务时发生错误: {ex.Message}");
|
||||
_logger.Error("中断任务时发生错误: {ex}",ex);
|
||||
|
||||
throw;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue