小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

跨線程調(diào)用控件之MethodInvoker - C#天空 - 博客園

 coding 2010-08-04

這是一部分重要的代碼,用VS2005通過。

使用到兩個(gè)控件,一個(gè)按鈕button1,一個(gè)標(biāo)簽label1。

 


         private void button1_Click(object sender, EventArgs e)  

        {

            Thread thread=new Thread(new ThreadStart(myname));

            thread.IsBackground=true;

            thread.Start();

             // 啟動(dòng)一個(gè)線程。

        }

        private void myname()

        {

           MethodInvoker mi = new MethodInvoker(hello);

            //創(chuàng)建一個(gè)委托,hello是該委托所托管的代碼,必須是聲明為void的。

           Invoke(mi);//同步執(zhí)行委托。               

            //BeginInvoke(mi);異步執(zhí)行委托。

        }

        private void hello()

        {

            label1.Text = "我是跨線程的!";

        }


  那里不正確,一定要指出,我可不想誤導(dǎo)人,也不想被自己誤導(dǎo)。

PS:寫完后我發(fā)現(xiàn)http://tb.blog.csdn.net/TrackBack.aspx?PostId=715064早就有解釋,比我的還詳細(xì),領(lǐng)教了。

故補(bǔ)充以下代碼:

        private Thread myThread;
        private void Form1_Load(object sender, EventArgs e)
        {
            myThread = new Thread(new ThreadStart(RunsOnWorkerThread));
            myThread.Start();
        }
        private void RunsOnWorkerThread()
        {
            //DoSomethingSlow();
            string pList = "myThread線程調(diào)用UI控件";
            label1.BeginInvoke(new System.EventHandler(UpdateUI), pList);
        }
        //直接用System.EventHandler,沒有必要自定義委托
        private void UpdateUI(object o, System.EventArgs e)
        {
           //UI線程設(shè)置label1屬性
            label1.Text = o.ToString() + "成功!";
   
    }

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多