<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.文檔教程

    友情鏈接

    搜索

    最新評論

    主站蜘蛛池模板: 亚洲免费视频观看| 亚洲欧洲国产精品你懂的| 亚洲成在人线aⅴ免费毛片| 成人AV免费网址在线观看| 国产成人无码免费看片软件| 国产一区二区免费在线| 亚洲gv白嫩小受在线观看| 免费毛片在线看不用播放器| 日韩电影免费在线| 色窝窝亚洲av网| 亚洲 小说区 图片区 都市| 一级黄色免费网站| 亚洲精品成人无限看| 成人爽a毛片免费| 亚洲成人高清在线观看| 在线免费观看一级片| 美女视频免费看一区二区| AV在线亚洲男人的天堂| 亚洲老熟女五十路老熟女bbw| 无码av免费一区二区三区| 亚洲精品一区二区三区四区乱码| 成人在线免费看片| 久久亚洲精品无码av| 亚洲日本中文字幕一区二区三区 | 亚洲第一黄片大全| a级成人免费毛片完整版| 亚洲欧洲日产专区| 日本不卡免费新一二三区| 国产免费久久精品99久久| 免费大香伊蕉在人线国产| 成在线人视频免费视频| 亚洲精品第五页中文字幕| 免费国产a国产片高清网站| 可以免费观看的毛片| 亚洲av无码国产精品夜色午夜| www.免费在线观看| 亚洲中文无码线在线观看| 国产一级大片免费看| 午夜影院免费观看| 免费国产草莓视频在线观看黄| 亚洲成av人片一区二区三区|