在用c#做WinFrom開(kāi)發(fā)的過(guò)程中。我們經(jīng)常需要用到進(jìn)度條(PRogressBar)用于顯示進(jìn)度信息。這時(shí)候我們可能就需要用到多線(xiàn)程,如果不采用多線(xiàn)程控制進(jìn)度條,窗口很容易假死(無(wú)法適時(shí)看到進(jìn)度信息)。下面我就簡(jiǎn)單結(jié)合一個(gè)我寫(xiě)的例子給大家做一個(gè)介紹。
首先看一下程序界面
第一步:設(shè)計(jì)界面不說(shuō)了...注意需要引用 using System.Threading;
第二步:定義一個(gè)代理,用于更新ProgressBar的值(Value)
//更新進(jìn)度列表
private delegate void SetPos(int ipos); alimama_pid="mm_10249644_1605763_5018464"; alimama_type="f"; alimama_sizecode ="tl_1x1_8"; alimama_fontsize=12; alimama_bordercolor="FFFFFF"; alimama_bgcolor="FFFFFF"; alimama_titlecolor="0000FF"; alimama_underline=0; alimama_height=22; alimama_width=0;
第三步:進(jìn)度條值更新函數(shù)(參數(shù)必須跟聲明的代理參數(shù)一樣)
private void SetTextMessage(int ipos)
{
if (this.InvokeRequired)
{
SetPos setpos = new SetPos(SetTextMessage);
this.Invoke(setpos, new object[] { ipos});
}
else
{
this.label1.Text = ipos.ToString() + "/100";
this.progressBar1.Value = Convert.ToInt32(ipos);
}
}
第四步:函數(shù)實(shí)現(xiàn)
private void button1_Click(object sender, EventArgs e)
{
Thread fThread = new Thread(new ThreadStart(SleepT));//開(kāi)辟一個(gè)新的線(xiàn)程
fThread.Start();
}
第五步:新的線(xiàn)程執(zhí)行函數(shù):
private void SleepT()
{
for (int i = 0; i < 500; i++)
{
System.Threading.Thread.Sleep(100);//沒(méi)什么意思,單純的執(zhí)行延時(shí)
SetTextMessage(100 * i / 500);
}
}
到此一個(gè)簡(jiǎn)單的進(jìn)度條程序做好了。簡(jiǎn)單吧。剩下就靠你自己改造嘍。轉(zhuǎn)載請(qǐng)注明一個(gè)出處吧。http://blog.csdn.net/gisfarmer謝謝了。 alimama_pid="mm_10249644_1605763_5027492"; alimama_type="f"; alimama_sizecode ="tl_1x5_8"; alimama_fontsize=12; alimama_bordercolor="FFFFFF"; alimama_bgcolor="FFFFFF"; alimama_titlecolor="0000FF"; alimama_underline=0; alimama_height=22; alimama_width=512;
文章出處:DIY部落(http://www.diybl.com/course/4_webprogram/asp.net/netjs/20090308/159855.html)
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注