2010-04-26 59 views
1

我正在做的這個應用程序使用類庫(如果我敢這麼說的話)來完成大部分工作: 其中有2個主要方法(DoWork和UndoWork)使用其他班級實現他們的目標。 現在,這工作,我想擺脫控制檯測試環境,並做一個GUI。從類庫方法中獲取進度狀態

我該如何獲得say的狀態,DoWork()方法來更新進度條? 我應該多層化類庫(目前與控制檯和Windows.Forms一起使用)來更新嗎?問題在於,我肯定必須讓類庫使用Window.Forms,這會弄亂控制檯測試應用程序(而且它們中有很多 - 我經過一路測試,然後再一起測試)。

你能否提出一些想法,或者我可以閱讀有關想法的地方(寫這個程序的重點是學習,所有的)?

哦,順便說一下,諸如「先見之明」或「計劃」等建議在這裏可能無濟於事......(現在,anywyay!) - 但肯定會在未來的項目中!

回答

0

您應該讓該方法採用額外的參數來實現接口或委託來接收進度報告。
然後,您應該對控制檯應用程序的界面進行無操作實現,並更新用於WinForms的ProgressBar控件的實現。

1

而是黑客攻擊了DoWork()實際狀態更新,簡單地修改它以提供進度更新的委託,雖然初始化DoWork()你(可選)提供的。

這樣,您可以提供一個委託,當您是控制檯應用程序時只需打印狀態更新,並且您可以提供一個導致在GUI應用程序中更新進度欄的委託。

+0

+1 - 我認爲使用一個委託與一個事件相結合將是最好的方式來處理這個強大的方式 – Wayne 2010-04-26 02:10:52