<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    blogjava's web log

    blogjava's web log
    ...

    [小技巧]winfrom使用多線程

    ? 就拿我寫的備份新浪博客的小程序說。。當我點備份按鈕的時候,如果不用線程。。那窗體可能就會假死在那,一動不動的。給用戶感覺很不爽的。。那要怎么解決呢??

    你可能會覺的這個很簡單。幾行代碼就搞定。

    定義個方法
    public?void?MyTest()
    ????????{
    ????????????
    for?(int?i?=?0;?i?<?100;?i++)
    ????????????{
    ????????????????
    this.textBox1.Text?=?i.ToString();
    ????????????}
    ????????}

    private?void?button1_Click(object?sender,?EventArgs?e)
    ????????{
    ????????????Thread?myThread?
    =?new?Thread(MyTest);
    ????????????myThread.Start();
    ????????}


    很遺憾。

    An unhandled exception of type 'System.InvalidOperationException' occurred in System.Windows.Forms.dll

    Additional information: 線程間操作無效: 從不是創建控件“textBox1”的線程訪問它。



    問題解決:

    1.定義 委托
    ?? delegate?void?myDelegate(int?i);
    ???myDelegate?mydelegate?
    =?null;

    2.定義方法,顯示消息

    public?void?ShowMessage(int?i)
    ????????{
    ????????????
    this.textBox1.Text?=?i.ToString();
    ????????????
    this.progressBar1.Value?=?i;
    ????????}



    3.定義方法,驅動消息

    public?void?MyEvent()
    ????????{
    ????????????
    for?(int?i?=?0;?i?<?100;?i++)
    ????????????{
    ????????????????Thread.Sleep(
    100);
    ????????????????
    this.BeginInvoke(mydelegate,?new?object[]?{i});
    ????????????
    ????????????}
    ????????}



    4: 運行
    ? private?void?button1_Click(object?sender,?EventArgs?e)
    ????????{
    ????????????mydelegate?
    =?new?myDelegate(ShowMessage);
    ????????????Thread?myThread?
    =?new?Thread(MyEvent);

    ????????????
    //IsBackground?是否后臺
    ????????????
    //這個屬性很重要?.如果?Thread?IsBackground?等于false
    ????????????
    //?當線程還沒有結束時,你點了關閉按鈕
    ????????????
    //?將拋出An?unhandled?exception
    ????????????
    //of?type?'System.InvalidOperationException'
    ????????????
    //occurred?in?System.Windows.Forms.dll?異常
    ????????????myThread.IsBackground?=?true;
    ????????????myThread.Start();
    ????????}



    全都代碼:

    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?WinfromTheadTest
    {
    ????
    public?partial?class?Form1?:?Form
    ????{
    ????????
    delegate?void?myDelegate(int?i);
    ????????myDelegate?mydelegate?
    =?null;


    ????????
    public?Form1()
    ????????{
    ????????????InitializeComponent();
    ????????}

    ???????
    ????????
    private?void?button1_Click(object?sender,?EventArgs?e)
    ????????{
    ????????????mydelegate?
    =?new?myDelegate(ShowMessage);
    ????????????Thread?myThread?
    =?new?Thread(MyEvent);

    ????????????
    //IsBackground?是否后臺
    ????????????
    //這個屬性很重要?.如果?Thread?IsBackground?等于false
    ????????????
    //?當線程還沒有結束時,你點了關閉按鈕
    ????????????
    //?將拋出An?unhandled?exception
    ????????????
    //of?type?'System.InvalidOperationException'
    ????????????
    //occurred?in?System.Windows.Forms.dll?異常
    ????????????myThread.IsBackground?=?true;
    ????????????myThread.Start();
    ????????}

    ????????
    public?void?ShowMessage(int?i)
    ????????{
    ????????????
    this.textBox1.Text?=?i.ToString();
    ????????????
    this.progressBar1.Value?=?i;
    ????????}

    ????????
    public?void?MyEvent()
    ????????{
    ????????????
    for?(int?i?=?0;?i?<?100;?i++)
    ????????????{
    ????????????????Thread.Sleep(
    100);
    ????????????????
    this.BeginInvoke(mydelegate,?new?object[]?{i});
    ????????????
    ????????????}
    ????????}

    ????????
    private?void?button2_Click(object?sender,?EventArgs?e)
    ????????{
    ??????????
    //
    ????????}


    ????}
    }

    點擊源代碼下載

    posted on 2006-10-09 20:50 record java and net 閱讀(792) 評論(0)  編輯  收藏 所屬分類: dot net相關

    導航

    常用鏈接

    留言簿(44)

    新聞檔案

    2.動態語言

    3.工具箱

    9.文檔教程

    友情鏈接

    搜索

    最新評論

    主站蜘蛛池模板: 久久99精品国产免费观看| 国产大片免费网站不卡美女| 国产亚洲一区二区在线观看| 在线看无码的免费网站| 亚洲精品理论电影在线观看| 亚洲午夜精品一级在线播放放| 99久久精品免费视频| 色噜噜噜噜亚洲第一| 久久久久久久尹人综合网亚洲| 国产精品久久久久久久久久免费 | 中文字幕在线观看亚洲视频| 亚洲国产精品碰碰| 四虎在线成人免费网站| 四虎成人精品国产永久免费无码| 亚洲无线电影官网| 亚洲 综合 国产 欧洲 丝袜 | 国产免费网站看v片在线| 亚洲香蕉在线观看| 亚洲精品无码不卡在线播放HE| 成年性午夜免费视频网站不卡| 在线观看特色大片免费网站| 亚洲国产精品成人午夜在线观看 | 亚洲福利视频网站| 亚洲裸男gv网站| 曰批全过程免费视频在线观看| 久久毛片免费看一区二区三区| 中文字幕乱码亚洲精品一区| 亚洲AV无码一区二区三区系列| 免费a级毛片永久免费| 日韩精品无码区免费专区 | 黑人粗长大战亚洲女2021国产精品成人免费视频 | 亚洲人成电影网站国产精品| 一区二区无码免费视频网站| 久别的草原电视剧免费观看| 日韩在线一区二区三区免费视频 | 亚洲VA中文字幕无码一二三区| 亚洲毛片av日韩av无码| 色吊丝最新永久免费观看网站| 最刺激黄a大片免费网站| 中国一级全黄的免费观看| 在线观看亚洲免费|