[csharp]view plain
copy
print?
using system;
using system.collections.generic;
using system.componentmodel;
using system.data;
using system.drawing;
using system.linq;
using system.text;
using system.windows.forms;
using system.threading;
namespace demo0004
//執行緒開始的時候呼叫的委託
private delegate void maxvaluedelegate(int maxvalue);
//執行緒執行中呼叫的委託
private delegate void nowvaluedelegate(int nowvalue);
private void button1_click(object sender, eventargs e)
///
/// 執行緒開始事件,設定進度條最大值
/// 但是我不能直接操作進度條,需要乙個委託來替我完成
///
/// threadmethod函式中傳過來的最大值
///
void method_threadstartevent(object sender, eventargs e)
///
/// 執行緒執行中的事件,設定進度條當前進度
/// 但是我不能直接操作進度條,需要乙個委託來替我完成
///
/// threadmethod函式中傳過來的當前值
///
void method_threadevent(object sender, eventargs e)
///
/// 執行緒完成事件
///
///
///
void method_threadendevent(object sender, eventargs e)
///
/// 我被委託呼叫,專門設定進度條最大值的
///
///
private void setmax(int maxvalue)
///
/// 我被委託呼叫,專門設定進度條當前值的
///
///
private void setnow(int nowvalue)
} public class threadmethod
threadendevent.invoke(new object(), new eventargs());//通知主介面我已經完成了
} } }
[csharp]view plain
copy
print?
using system;
using system.collections.generic;
using system.componentmodel;
using system.data;
using system.drawing;
using system.linq;
using system.text;
using system.windows.forms;
using system.threading;
namespace demo0004
//通過建立工作執行緒消除使用者介面執行緒的阻塞問題
private void button1_click(object sender, eventargs e)
//執行緒方法 一定要是object 型別引數 同時返回值是void
private void download(object obj)
} //更新進度條
public void funchangeprogress(int value)
//更新按鈕
public void funchangebutton(int value)
else
} //窗體關閉 強制退出 銷毀所有相關程序
private void form2_formclosing(object sender, formclosingeventargs e)
} }
[csharp]view plain
copy
print?
using system;
using system.collections.generic;
using system.componentmodel;
using system.data;
using system.drawing;
using system.linq;
using system.text;
using system.windows.forms;
namespace demo0004
private void form3_load(object sender, eventargs e)
private void updatework(object source, system.timers.elapsedeventargs e)
//更新
public void funchangestatus()
} }
C 通過委託控制進度條以及多執行緒更新控制項
csharp view plain copy print?using system using system.collections.generic using system.componentmodel using system.data using system.drawing using sy...
C 通過委託控制進度條以及多執行緒更新控制項
csharp view plain copy print using system using system.collections.generic using system.componentmodel using system.data using system.drawing using sy...
C 多執行緒進度條設計
在多執行緒的情況下,其它執行緒無法直接呼叫到主線程上的控制項,只能通過 來實現主線程上控制項的呼叫。1 定義委託 執行任務的委託宣告 解決長任務死假 delegate void runtaskdelegate int seconds 顯示進度條的委託宣告 跨執行緒呼叫控制項 delegate voi...