国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

關于線程的參數、“返回值”、及線程的中止

2019-11-18 16:57:07
字體:
來源:轉載
供稿:網友

關于線程的參數(2.0)、“返回值”、及線程的中止


1.線程的參數:
有時候會想向輔助線程傳遞些信息,這里需要用到ParameterizedThreadStart 委托

示例:

        PRivate void btRunThread_Click(object sender, EventArgs e)

        {

            Thread t = new Thread(new ParameterizedThreadStart(this.ThreadRun));

            t.Start(100);

        }

 

        private void ThreadRun(object o)

        {

            this.lbCompleted.Invoke((MethodInvoker)delegate { this.lbCompleted.Text = System.Convert.ToString(o); });

        }

 

2.通過代理可以大致實現類似功能,示例:

    class Program

    {

        static void Main(string[] args)

        {

            ThreadClass tc = new ThreadClass(new MyDlg(DlgMethod));

            Thread thread = new Thread(new ThreadStart(tc.ThreadRun));

            Console.WriteLine("second thread start");

            thread.Start();

            thread.Join();

            Console.WriteLine("second thread completed");

            Console.Read();       

        }


        private static void DlgMethod(int i)

        {

            Console.WriteLine("Second Thread Result:{0}", i);

        }

    }

 

    public delegate void MyDlg(int i);

 

    class ThreadClass

    {

        private MyDlg myDlg;

 

        public ThreadClass(MyDlg pDlg)

        {

            this.myDlg = pDlg;

        }

 

        public void ThreadRun()

        {

            int total = 0;

            for (int i = 0; i < 100; i++)

            {

                total += i;

            }

 

            if (myDlg != null)

            {

                myDlg(total);

            }

        }

    }

 

3.線程的中止:

(1).join方法

MSDN注釋:在繼續執行標準的 COM 和 SendMessage 消息泵處理期間,阻止調用線程,直到某個線程終止為止。

看得一頭霧,自己試了一下,似乎線程在調用join方法之后,該線程搶占了所有的cpu時間,直到線程的任務完成。不知道是這是這樣?

(2).abort方法

立即中止線程

(3).定義標識量

示例:

    class Program

    {

        private static bool stop;

        static void Main(string[] args)

        {

            stop = false;

 

            Thread t = new Thread(new ThreadStart(ThreadRun));

            t.Start();

            Thread.Sleep(100);

            stop = true;

 

            Console.Read();

        }

 

        static void ThreadRun()

        {

            while (!stop)

            {

                Console.WriteLine("Do Some Work...");

            }

        }

    }


http://m.survivalescaperooms.com/KissKnife/archive/2006/10/03/520463.html


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 临湘市| 吉木乃县| 衡水市| 霍州市| 洛川县| 清水河县| 轮台县| 白水县| 临泉县| 昔阳县| 武邑县| 安远县| 海晏县| 丹东市| 南投县| 沙雅县| 和政县| 壤塘县| 仁化县| 桓台县| 天祝| 都兰县| 信宜市| 泰兴市| 永平县| 五指山市| 永春县| 扶风县| 清涧县| 蒲城县| 永德县| 朝阳区| 商都县| 全南县| 凌海市| 西乌| 林甸县| 华阴市| 林西县| 木里| 和龙市|