C 通過委託控制進度條以及多執行緒更新控制項

2021-09-22 06:07:14 字數 2936 閱讀 5863

[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...