完善功能
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/bin
|
||||||
src/.vs
|
src/.vs
|
||||||
src/obj
|
src/obj
|
||||||
|
src/lib
|
||||||
|
src/download
|
||||||
src/.config
|
src/.config
|
||||||
*.user
|
*.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
|
try
|
||||||
{
|
{
|
||||||
// 先获取任务信息
|
// 先获取任务信息
|
||||||
var taskInfo = _dbGateService.GetTaskDetail(taskId);
|
var taskInfo = _taskManager.GetRunningTaskInfo(taskId);
|
||||||
if (taskInfo == null)
|
if (taskInfo == null)
|
||||||
{
|
{
|
||||||
return Ok(new CommonRsp
|
return Ok(new CommonRsp
|
||||||
|
|
|
@ -324,7 +324,7 @@ namespace iFileProxy.Services
|
||||||
sqlCmd.Parameters.AddWithValue("@tid", taskInfo.TaskId);
|
sqlCmd.Parameters.AddWithValue("@tid", taskInfo.TaskId);
|
||||||
if (sqlCmd.ExecuteNonQuery() >= 1)
|
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;
|
return true;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|
|
@ -237,7 +237,6 @@ namespace iFileProxy.Services
|
||||||
{
|
{
|
||||||
_logger.Error($"task: {taskInfo.TaskId} 进程退出状态异常 ExitCode: {aria2c.ExitCode}");
|
_logger.Error($"task: {taskInfo.TaskId} 进程退出状态异常 ExitCode: {aria2c.ExitCode}");
|
||||||
taskInfo.Status = TaskState.Error;
|
taskInfo.Status = TaskState.Error;
|
||||||
_dbGateService.UpdateTaskStatus(taskInfo);
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -341,6 +340,16 @@ namespace iFileProxy.Services
|
||||||
return new ServerTaskLoadInfo { Queuing = _pendingTasks.Count , Running = _runningTasks.Count};
|
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)
|
public void TryKillTask(TaskInfo taskInfo)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
|
@ -349,13 +358,20 @@ namespace iFileProxy.Services
|
||||||
if (_runningTasks.TryGetValue(taskInfo.TaskId, out var runningTask))
|
if (_runningTasks.TryGetValue(taskInfo.TaskId, out var runningTask))
|
||||||
{
|
{
|
||||||
_logger.Information($"正在尝试中断任务: {taskInfo.TaskId}");
|
_logger.Information($"正在尝试中断任务: {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);
|
_runningTasks.Remove(taskInfo.TaskId);
|
||||||
|
|
||||||
// 更新任务状态为已取消
|
|
||||||
taskInfo.Status = TaskState.Canceled;
|
|
||||||
_dbGateService.UpdateTaskStatus(taskInfo);
|
|
||||||
|
|
||||||
// 删除未完成的文件
|
// 删除未完成的文件
|
||||||
var filePath = Path.Combine(_appConfig.DownloadOptions.SavePath, taskInfo.FileName);
|
var filePath = Path.Combine(_appConfig.DownloadOptions.SavePath, taskInfo.FileName);
|
||||||
|
@ -382,7 +398,8 @@ namespace iFileProxy.Services
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
_logger.Error($"中断任务时发生错误: {ex.Message}");
|
_logger.Error("中断任务时发生错误: {ex}",ex);
|
||||||
|
|
||||||
throw;
|
throw;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue