Монитор прогресса: интервал выполнения
Как показано в приведенном ниже коде, у меня есть 4 функции, и я вручную устанавливаю каждый из интервалов выполнения монитора хода выполнения = 25%.
Но мой подход будет более нецелесообразным устанавливать вручную, если у меня есть 20 или более функций.
Какой будет лучший подход для установки интервала прогресса с учетом количества функций X?
class Task extends SwingWorker<Void, Void> {
@Override
public Void doInBackground() {
int progress = 0;
setProgress(0);
while (progress < 100 && !isCancelled())
{
functionA();
try {
Thread.sleep(1000);
}catch(InterruptedException ex) {
ex.printStackTrace();
}
progress += 25;
setProgress(Math.min(progress, 100));
taskOutput.setText("Step 2");
functionB();
progress += 25;
setProgress(Math.min(progress, 100));
try {
Thread.sleep(1000);
}catch(InterruptedException ex) {
ex.printStackTrace();
}
taskOutput.setText("Step 3");
functionC();
progress += 25;
setProgress(Math.min(progress, 100));
try {
Thread.sleep(1000);
}catch(InterruptedException ex) {
ex.printStackTrace();
}
taskOutput.setText("Step 4");
functionD();
try {
Thread.sleep(1000);
}catch(InterruptedException ex) {
ex.printStackTrace();
}
progress += 25;
setProgress(Math.min(progress, 100));
}
return null;
}
1 ответ
Решение
int numberOfFunctions = 20;
int progress = 0;
...
function1();
setProgress((++progress * 100) / numberOfFunctions); // progress is 5%
...
function20();
setProgress((++progress * 100) / numberOfFunctions); // progress is 100%