首先,通用進度條類的實現
public partial class progressshow : formpublic progressshow(iprogressbar progressbar)
#endregion
/// /// 執行緒處理方法
///
private void handlethreadproc()
//退出執行緒
_handlethread.abort();
}catch (exception ex)
finally
setprogressbarvalue(pgbar, pgbar.maximum - 1);
setlabeltext(lbprogress, "99%");}}
#region 設定label的方法
/// /// 設定label狀態
///
/// /// private void setlabeltext(system.windows.forms.label lb, string text));}
else
}catch
}private void setlabeltextinvoke(system.windows.forms.label lb, string text)
#endregion
#region 進度條設定方法
/// /// 設定進度條
///
/// /// private void setprogressbarvalue(system.windows.forms.progressbar pgb, int value));}
else
}catch (exception ex)
}private void setprogressbarvalueinvoke(system.windows.forms.progressbar pgb, int value)
#endregion
/// /// 定時器,用於處理進度條
///
/// /// private void timerprogress_tick(object sender, eventargs e)
else
else}}
else
}/// /// form初始化方法
///
/// /// private void progressshow_load(object sender, eventargs e)
/// /// 視窗關閉時呼叫的方法
///
/// /// private void progressshow_formclosed(object sender, formclosedeventargs e)
}說明1、由於本進度條類要處理介面顯示以及相應的業務方法(該方法依據不同的業務需求可以隨時變化,只要相應的業務類繼承介面iprogressbar實現介面方法即可),並且這兩個工作要並行進行,因此程式開啟了乙個新的處理業務方法的執行緒,而介面顯示的處理由timer事件去處理
2、因為本進度條為通用進度條,我們並不知道以後要處理什麼樣的業務方法,這種情況下我們有兩種選擇來處理。
其一,使用**機制,客戶將業務方法傳入,在通用進度條類中使用該**,從而呼叫這個外部可變的業務方法。
其二,使用介面,在繼承該介面的類物件中實現介面方法,也就是業務方法。並且將介面傳入,通過呼叫介面方法來呼叫外部的業務方法。
由於我們需要一些必須的變數,只通過引數記錄有些笨拙,因此最後選擇了第二種方法——介面
其次,iprogressbar介面:
public inte***ce iprogressbar
第三,通過刪除檔案操作予以說明:public class deletelogfile : iprogressbar
#endregion
public bool progres**ethod()
else
case type.report:
int limit = (int)_para[0];
return deletedbreport(limit);
case type.compression:
return compressiondbfile();
default:
return false;}}
/// /// 刪除指定日期以前的過期資料夾,子資料夾和檔案
///
/// 目標目錄
/// 過期時間
private bool deletetempfiles(string tempdirectory, datetime dtbefore)
else}}
retbool = true;
}catch (exception ex)
return retbool;
}private bool deletedbreport(int limit)
catch (sqlexception ex)
finally
return result;
}private bool compressiondbfile()
catch (exception)
finally
return result;}}
最後,通用進度條的使用
iprogressbar progressbar = new deletelogfile(type.compression);
progressshow pro = new progressshow(progressbar);
if (pro.showdialog() == dialogresult.ok)
else
//說明: 想要使用通用進度條的使用者首先要實現iprogressbar介面,以該介面物件構造出progressshow物件。
//而iprogressbar介面中的bool progres**ethod()方法用於處理相應的業務邏輯。例如要刪除某路徑的檔案,
//則可以在實現該介面的類中相應方法內些相應的刪除檔案方法,當全部刪除完成時,返回true。
C 進度條實現
namespace progress namespace progress public mainfrm private void button1 click object sender,eventargs e private void handlethread 執行緒處理函式,實現耗時任務 cla...
進度條的實現
1 實現要求 的數量在不斷地增加,後面的數字也隨著增加,圖示不停地在旋轉 2 用到的基礎知識 n 換行 lf 將當前位置移到下一行開頭 r 回車 cr 將當前位置移到本行開頭,每次游標會回到行首 代表乙個反斜線字元 0 空字元 null 3 程式的實現 index裡面是圖示的實現,100s 是左端對...
進度條的實現
include include int main char ch printf 033 25l 033 47m printf 58s r fflush stdout int i 0 while i 50 printf 033 31m 033 58c ok 033 0m printf n 033 25...