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

    友情鏈接

    搜索

    最新評論

    主站蜘蛛池模板: 久久WWW免费人成人片| 香港a毛片免费观看| 国产免费观看a大片的网站| 亚洲午夜在线播放| 日本成年免费网站| 亚洲永久在线观看| 日韩在线视频免费看| 青青久在线视频免费观看 | 亚洲啪啪AV无码片| 亚洲人成777在线播放| 爱情岛亚洲论坛在线观看 | 久久久亚洲欧洲日产国码aⅴ | 亚洲精品视频在线免费| 狠狠热精品免费观看| 亚洲精品第一国产综合精品99| 本道天堂成在人线av无码免费| 在线观看H网址免费入口| 久久国产成人精品国产成人亚洲| 亚洲xxxx18| 免费人成在线观看网站视频| 久久av免费天堂小草播放| 免费人成在线观看网站品爱网日本| 国产精品亚洲综合一区在线观看 | 四虎影永久在线高清免费| 特黄特色的大片观看免费视频| 国产偷窥女洗浴在线观看亚洲| 久久免费国产精品一区二区| 亚洲av无码片在线观看| 99久久免费中文字幕精品| 亚洲精品字幕在线观看| 免费在线人人电影网| 国产黄色片在线免费观看| 国产免费A∨在线播放| 亚洲国产理论片在线播放| 国产极品粉嫩泬免费观看| 97在线免费视频| 亚洲一级片免费看| 蜜臀98精品国产免费观看| 亚洲av成人无码久久精品| 色猫咪免费人成网站在线观看| 亚洲婷婷第一狠人综合精品|