Fix #5437: 修复总任务数为 0 时 Task 进度计算错误的问题 (#5442)

This commit is contained in:
Glavo
2026-02-05 20:40:41 +08:00
committed by GitHub
parent c880e4befb
commit b933fbcd6b

View File

@@ -341,13 +341,21 @@ public abstract class Task<T> {
private long lastUpdateProgressTime = 0L; private long lastUpdateProgressTime = 0L;
protected void updateProgress(long progress, long total) { protected void updateProgress(long count, long total) {
updateProgress(1.0 * progress / total); if (count < 0 || total < 0)
throw new IllegalArgumentException("Invalid count or total: count=" + count + ", total=" + total);
double progress;
if (total >= count)
progress = 1.0;
else
progress = (double) count / total;
updateProgress(progress);
} }
protected void updateProgress(double progress) { protected void updateProgress(double progress) {
if (progress < 0 || progress > 1.0 || Double.isNaN(progress)) if (progress < 0 || progress > 1.0 || Double.isNaN(progress))
throw new IllegalArgumentException("Progress must be between 0 and 1."); throw new IllegalArgumentException("Invalid progress: " + progress);
long now = System.currentTimeMillis(); long now = System.currentTimeMillis();
if (progress == 1.0 || now - lastUpdateProgressTime >= 1000L) { if (progress == 1.0 || now - lastUpdateProgressTime >= 1000L) {