WinForm中 事件 委托 多线程的应用【以一个下载进度条为例】
生活随笔
收集整理的這篇文章主要介紹了
WinForm中 事件 委托 多线程的应用【以一个下载进度条为例】
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
第一步:首先我們創(chuàng)建一個(gè)winfor的項(xiàng)目
第二步:我們建一個(gè)窗體
在一個(gè)窗體里面 打開一個(gè)另外的窗體 另外的窗體有一個(gè)按鈕 點(diǎn)擊后就開始下載 下載完成后 在注冊(cè)窗體上面 顯示下載完成(達(dá)到在一個(gè)窗體里面修改另外的一個(gè)窗體)
?第三步:完成下載窗體的進(jìn)度條
private void button1_Click(object sender, EventArgs e){for (int i = 0; i <= 100; i++){this.progressBar1.Value = i;System.Threading.Thread.Sleep(300);}}第四步:處理窗體假死問(wèn)題
(用到多線程和委托)
第五步:處理跨線程調(diào)用ui
線程間操作無(wú)效: 從不是創(chuàng)建控件“progressBar1”的線程訪問(wèn)它。
?
第六步 主窗體添加委托 解決跨線程調(diào)用UI
public FormMain(){InitializeComponent();sif = ShowInfoFun;}public void ShowInfoFun(string text){this.label1.Text = text;}private void button1_Click(object sender, EventArgs e){FormLoad fl = new FormLoad();//在主窗體中注冊(cè)子窗體的事件fl.eventShowInfo += new FormLoad.ShowInfo(fl_eventShowInfo);fl.Show();}//事件的執(zhí)行方法void fl_eventShowInfo(string text){this.label1.Invoke(sif, text);}//在主窗體這里 創(chuàng)建一個(gè)委托public delegate void ShowInfo(string text);public ShowInfo sif;}視頻下載地址:http://pan.baidu.com/share/link?shareid=1740683788&uk=540184145
需要源碼的可以到這里向樓主要:http://www.bamn.cn/redirect.php?tid=19&goto=lastpost#lastpost
轉(zhuǎn)載于:https://www.cnblogs.com/maijin/p/3246238.html
總結(jié)
以上是生活随笔為你收集整理的WinForm中 事件 委托 多线程的应用【以一个下载进度条为例】的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: jni 入门 android的C编程之旅
- 下一篇: hdu 3853 LOOPS 概率DP