成人午夜激情影院,小视频免费在线观看,国产精品夜夜嗨,欧美日韩精品一区二区在线播放

.Net中多線程管理的一種方法(C#)

2010-08-28 10:50:18來源:西部e網(wǎng)作者:

目的

希望能時刻監(jiān)視程序所開的所有線程的執(zhí)行進(jìn)度,隨時對這些線程進(jìn)行操作。


研究如何實現(xiàn)

今天我研究半天如何管理多線程,就像FlashGet那樣能夠知道一個文件(線程)什么時候下載結(jié)束正在干什么下載了多少等等。

我希望能時刻監(jiān)視我這些線程的執(zhí)行進(jìn)度,隨時對這些線程進(jìn)行操作。但是應(yīng)該用什么函數(shù)來實現(xiàn)呢?

根據(jù)現(xiàn)在已經(jīng)掌握得不多的線程知識,我寫了一種比較不理想但能實現(xiàn)管理線程的方法。就是有的時候容易假死,因為定時器是在主線程中執(zhí)行的。如果網(wǎng)友朋友有什么比較好的管理方法的話還望賜教。


實現(xiàn)核心代碼簡介

聲明公共變量

ArrayList ThreadList = new ArrayList();


首先啟動定時器,檢測線程狀態(tài)

timer1.Interval = 3000;
timer1.Start();

開線程,開10個吧,把每一個線程的作為一個對象存進(jìn)ThreadList,然后把相應(yīng)的ManagedThreadId存入listView1中

int n = 10;
            Thread[] kk = new Thread[n];
            for (int i = 0; i < n; i++)
            {
                kk[i] = new Thread(new ThreadStart(proc));
                ListViewItem item1 = new ListViewItem(kk[i].ManagedThreadId.ToString(), 0);
                item1.SubItems.Add("0");
                listView1.Items.Add(item1);
                ThreadList.Add(kk[i]);
                kk[i].Start();
            }


重頭戲,定時器檢測所有的線程狀態(tài),如果該線程停止了,則在listview中顯示停止,并且再在ThreadList中刪除該對象!

private void timer1_Tick(object sender, EventArgs e)
        {

            for (int i = 0; i < ThreadList.Count; i++)
            {
                Thread o = (Thread)ThreadList[i];
                if (o.ThreadState.ToString() == "Stopped")
                {
                    foreach (ListViewItem LVI in listView1.Items)
                    {
                        if (Convert.ToInt32(LVI.SubItems[0].Text) == o.ManagedThreadId)
                        {
                            LVI.SubItems[1].Text = "Stopped";
                        }
                    }
                    ThreadList.RemoveAt(i--);
                 }
            }

        } 


圖片簡介


遺憾

該方法顯然效率不夠最優(yōu)化,不適合超龐大的線程群,不過一般小問題也就夠了哈~~~

關(guān)鍵詞:C#
主站蜘蛛池模板: 建德市| 康保县| 沁水县| 江西省| 达州市| 花莲县| 渑池县| 乐昌市| 那坡县| 桦南县| 平罗县| 寻甸| 上犹县| 麻阳| 辽宁省| 横山县| 卢龙县| 灵山县| 错那县| 蒲江县| 兴业县| 新乡市| 响水县| 宝应县| 石泉县| 旺苍县| 夏邑县| 镇原县| 旅游| 当雄县| 新绛县| 三台县| 民丰县| 正阳县| 盐源县| 和静县| 开江县| 德保县| 莱州市| 桂东县| 云霄县|