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

    友情鏈接

    搜索

    最新評論

    主站蜘蛛池模板: 国产亚洲美女精品久久| 久久久精品视频免费观看 | 亚洲av色福利天堂| 97在线观免费视频观看| 免费无码午夜福利片 | 亚洲精品无码专区| 亚洲欧洲日产国码一级毛片| 国产自国产自愉自愉免费24区| 亚洲国产精品一区二区久| 免费二级毛片免费完整视频| 无码人妻AV免费一区二区三区| 亚洲AV无码AV吞精久久| 亚洲AV区无码字幕中文色| 国产免费av片在线播放| 一区二区三区四区免费视频| 国产亚洲欧美日韩亚洲中文色| 亚洲AV永久无码精品| 成人永久免费高清| 久久午夜羞羞影院免费观看| 极品美女一级毛片免费| 亚洲mv国产精品mv日本mv| 国产亚洲精品精品国产亚洲综合| 69成人免费视频| 色播在线永久免费视频网站| 亚洲丰满熟女一区二区哦| 亚洲欧洲日韩不卡| 亚洲综合色视频在线观看| 好爽…又高潮了免费毛片| 久久国产精品免费专区| 国产成人1024精品免费| 亚洲av片在线观看| 亚洲AV无码久久久久网站蜜桃| 久久久久久亚洲精品| 亚洲Aⅴ无码一区二区二三区软件 亚洲AⅤ视频一区二区三区 | 亚洲AV综合色区无码二区偷拍| 国产自偷亚洲精品页65页| 免费看片A级毛片免费看| 免费视频爱爱太爽了| 久久国产乱子精品免费女 | 国产精品免费看久久久久| 天天影视色香欲综合免费|