2015-05-10 5 views
2

Как показано ниже, у меня есть 4 функции, и я вручную устанавливаю каждый промежуток времени для монитора прогресса = 25%.Монитор хода: интервал выполнения

Но мой подход будет более нецелесообразным устанавливать интервал выполнения вручную, если у меня есть 20 или более функций.

Что будет лучшим подходом для установки интервала прогресса с учетом количества функций?

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; 
    } 

ответ

2
int numberOfFunctions = 20; 
int progress = 0; 
... 
function1(); 
setProgress((++progress * 100)/numberOfFunctions); // progress is 5% 
... 
function20(); 
setProgress((++progress * 100)/numberOfFunctions); // progress is 100%