2012-02-10 65 views
2

我需要Windows窗體應用程序的進度條,但我的過程不是長度特定的,所以我不能將最大值添加到進度條。如何在非長度特定任務或並行循環中使用進度條?

我必須用LongProcess類Run方法運行時間增加進度條值。

void start_click() 
{ 
    button1.Enabled=false; 

    Task.Factory.StartNew(()=>{ 
     Parallel.Foreach(files,f=>{ 
      LongProcess process =new LongProcess(); // Long-running process (is not my control) 
      process.Run(f); 
        //progressBarValueIncrement(); 

     }); 
    }).ContinueWith(t=>{ 
     // completed 
     BeginInvoke(new Action(() => button1.Enabled=true)); 
    }); 
} 

我該如何執行此操作?

+2

您可以使用循環進度條,這說明只是一些正在進行中,你也可以近似您的應用程序運行時間,並在最後一步停止,然後在完成進度時停止它。 – 2012-02-10 13:07:02

+1

也許我在這裏錯過了一些東西,但是如果您知道使用foreach迭代的文件數量,這不是每次完成一次的計數增加1 /計數? – 2012-02-10 13:34:59

+0

@MarkSmith而過程 – oguzh4n 2012-02-10 13:40:08

回答

2

,你可以增加用剩下的未填充值的一定百分比的進度條。這意味着進度條從來沒有被填滿,並且會越來越慢地變得越來越飽滿。

因此,在第一個增量中填充進度條50%,然後下一個增量填充其餘部分的50%,因此25%總共75%,然後50%剩餘25%,總計87.5%等等

您可能希望讓你使用%年齡的基礎上的進度條有多滿是舞臺,所以在一開始用5%開始,因此不會在一開始填滿過快,然後移動到較高的百分比,所以你看到了吧還在動接近尾聲...

如果你不知道的東西多長時間是要採取雖然是一個進度條合適?也許你會的東西,表現出進展正在發生的事情,但沒多少已經完成......

+1

我也會質疑在這種情況下進度條UI模式的適用性。 – 2012-02-10 13:09:56