伸进女同桌乳沟里摸爽了,小雪解开乳罩给老杨摸,少妇被按摩师摸高潮了,亲嘴扒胸摸屁股激烈视频,强摸秘书人妻大乳BD,摸BBB揉BBB揉BBB视频

新疆軟件開(kāi)發(fā)

本站首頁(yè) 軟件開(kāi)發(fā) 成功案例 公司新聞 公司簡(jiǎn)介 客服中心 軟件技術(shù) 網(wǎng)站建設(shè)
  您現(xiàn)在的位置: 新疆二域軟件開(kāi)發(fā)公司 >> 開(kāi)發(fā)語(yǔ)言 >> 文章正文

實(shí)現(xiàn)跨線程調(diào)用控件

在VS 2005  中考慮到線程的安全性,不允許跨線程調(diào)用控件!  為了解決這一問(wèn)題 

 1. 將Control 的 CheckForIllegalCrossThreadCalls 屬性設(shè)置為假, 不去捕獲錯(cuò)誤線程的調(diào)用,但這種做法是不安全的!

2.使用委托異步調(diào)用 

見(jiàn)代碼:

 

 

using System;
using System.Collections.Generic;
using System.Text;
using System.Threading;
using System.Windows.Forms;
namespace TabSelect
...{
    class MyThread
    ...{
        public delegate void SetLabelText(string text);   //定義委托
        Control  control;

        Thread thread;
        ThreadStart start;
        int num2;

        構(gòu)造方法,初始化線程,以及要改變屬性的控件#region  構(gòu)造方法,初始化線程,以及要改變屬性的控件
        public MyThread(Control control,int  num)
        ...{
            this.control = control;
            start = new ThreadStart(BuildNum2);   //訂閱線程要執(zhí)行的代碼
            this.num2 = num;
            thread = new Thread(start);

            thread.Start();
        }
        #endregion 

        線程中需要執(zhí)行的方法  通過(guò)設(shè)置Control 屬性,指示是否捕獲錯(cuò)誤線程的調(diào)用#region 線程中需要執(zhí)行的方法  通過(guò)設(shè)置Control 屬性,指示是否捕獲錯(cuò)誤線程的調(diào)用
        public void BuildNum()   
        ...{     
             Random random = new Random(num2);
             Control.CheckForIllegalCrossThreadCalls = false;

do
             ...{
                 int num = random.Next(0, 10);
                 control.Text = num.ToString();
                 Thread.Sleep(100);
             } while (true);

         }
        #endregion 

        方法二,使用委托異步調(diào)用#region  方法二,使用委托異步調(diào)用
         public void BuildNum2()  
        ...{
            Random myRand = new Random(num2);

            while (true)
            ...{
                SetText(myRand.Next(0, 10).ToString());
                Thread.Sleep(100);
            }
        }
           #endregion


        改變UI 線程的控件屬性#region 改變UI 線程的控件屬性
        public void SetText(string  str)
        ...{
            if (control.InvokeRequired)
            ...{
                SetLabelText  setLableText  = new SetLabelText(SetText);
                control.Invoke(setLableText, new object[] ...{ str});

}
            else
            ...{
                control.Text = str;
            }
        }
        #endregion


        public void Kill()
        ...{
            thread.Abort();

        }
    }
}

 

界面

 

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Threading;

namespace TabSelect
...{
    public partial class Form2 : Form
    ...{

        Point myPoint;
        private bool isMouseDown;
        private bool isStart = true;

        MyThread m;
        MyThread m2;
        MyThread m3;
        public Form2()
        ...{
            InitializeComponent();
        }

        private void label4_Click(object sender, EventArgs e)
        ...{
            this.Close();

            Application.Exit();
         
        }

       

        private void Form2_MouseDown(object sender, MouseEventArgs e)

  ...{
            if (e.Button == MouseButtons.Left)
            ...{
                myPoint = new Point(-e.X,-e.Y);
                isMouseDown = true;
            }
        }

        private void Form2_MouseMove(object sender, MouseEventArgs e)
        ...{
                if (isMouseDown == true)
                ...{
                    Point newPoint = Control.MousePosition;
                    newPoint.Offset( myPoint.X,myPoint.Y);
                    this.Location = newPoint;
                }    
        }

        private void Form2_MouseUp(object sender, MouseEventArgs e)
        ...{
            if (e.Button == MouseButtons.Left)
            ...{
                isMouseDown = false;
            }
        }

        private void Form2_Load(object sender, EventArgs e)
        ...{

  }

        private void timer1_Tick(object sender, EventArgs e)
        ...{
            Random myRandom = new Random();

            label1.Text = myRandom.Next(0, 10).ToString();
        }

        private void button1_Click(object sender, EventArgs e)
        ...{
            if (isStart == true)
            ...{
                  m = new MyThread(label1,1000);
                  m2 = new MyThread(label2,1111);
                  m3 = new MyThread(label3, 2222);
               
                  isStart = false;
                  button1.Text = "結(jié)束";
            }
            else
            ...{
                m.Kill();
                m2.Kill();
                m3.Kill();
                isStart = true;

                button1.Text = "開(kāi)始";

    }
        }
    }
}

作者:未知 | 文章來(lái)源:自學(xué)編程網(wǎng) | 更新時(shí)間:2008-1-7 18:51:12

  • 上一篇文章:

  • 下一篇文章:

  • 相關(guān)文章:
    沒(méi)有相關(guān)文章
    軟件技術(shù)
    · 開(kāi)發(fā)語(yǔ)言
    · Java技術(shù)
    · .Net技術(shù)
    · 數(shù)據(jù)庫(kù)開(kāi)發(fā)
    最新文章  
    ·搜集整理的asp.net的驗(yàn)證方
    ·各種FOR循環(huán)結(jié)構(gòu)的整理
    ·軟件項(xiàng)目開(kāi)發(fā)中應(yīng)該考慮那
    ·搜集整理的javascript sel
    ·軟件開(kāi)發(fā)中項(xiàng)目經(jīng)理有那些
    ·學(xué)習(xí)如何在Lambda表達(dá)式進(jìn)
    ·C++基礎(chǔ)知識(shí):結(jié)構(gòu)體數(shù)據(jù)的
    ·C#實(shí)現(xiàn)短信發(fā)送程序的例子
    ·sun最近修補(bǔ)了一部分java的
    ·rss定制的另外一種實(shí)現(xiàn)方式
    ·delphi實(shí)現(xiàn)利用arp欺騙來(lái)實(shí)
    ·基礎(chǔ)學(xué)習(xí):基于WF的流程框
    ·網(wǎng)絡(luò)編程中怎樣得知一次數(shù)
    ·如何逆序輸出單鏈表?
    ·軟件開(kāi)發(fā)過(guò)程中的性能設(shè)計(jì)
    關(guān)于我們 | 軟件開(kāi)發(fā) | 下載試用 | 客服中心 | 聯(lián)系我們 | 友情鏈接 | 網(wǎng)站地圖 | 新疆電子地圖 | RSS訂閱
    版權(quán)所有 © 2016 新疆二域軟件開(kāi)發(fā)網(wǎng) www.zgna.net All Rights Reserved 新ICP備14003571號(hào)
    新疆軟件開(kāi)發(fā)總機(jī):0991-4842803、4811639.
    客服QQ:596589785 ;地址:新疆烏魯木齊北京中路華聯(lián)大廈A-5C 郵編:830000
     
    乌苏市| 京山县| 白城市| 荔波县| 高碑店市| 云南省| 元谋县| 仲巴县| 永顺县| 通榆县| 昂仁县| 松潘县| 孝感市| 西和县| 昆山市| 海南省| 科技| 德兴市| 托克逊县| 开原市| 澄迈县| 平塘县| 金平| 宿松县| 仁布县| 建始县| 信宜市| 济南市| 平潭县| 安阳县| 辰溪县| 个旧市| 伽师县| 孟连| 潢川县| 南通市| 武清区| 云安县| 玉山县| 平塘县| 南康市|