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

    友情鏈接

    搜索

    最新評論

    主站蜘蛛池模板: 大学生高清一级毛片免费| 69视频免费在线观看| 免费国产成人高清视频网站 | 精品国产香蕉伊思人在线在线亚洲一区二区| 亚洲高清一区二区三区| 最近免费中文字幕视频高清在线看| 亚洲精品日韩专区silk| 91手机看片国产永久免费| 亚洲国产成人手机在线电影bd| 四虎精品视频在线永久免费观看| 亚洲激情黄色小说| 成人免费毛片观看| 日韩精品亚洲专区在线影视| 亚洲男人的天堂一区二区| 永久免费不卡在线观看黄网站| 久久青青草原亚洲av无码app| 97在线观免费视频观看| 亚洲AV色欲色欲WWW| 国产中文在线亚洲精品官网| 免费无码又爽又刺激高潮软件| 亚洲视频在线视频| 日韩吃奶摸下AA片免费观看| 青草久久精品亚洲综合专区| 区三区激情福利综合中文字幕在线一区亚洲视频1 | 一个人看的www免费高清| 4338×亚洲全国最大色成网站| 七次郎成人免费线路视频| 亚洲avav天堂av在线不卡| 美女视频黄是免费的网址| 国产亚洲精彩视频| 九月丁香婷婷亚洲综合色| 免费三级毛片电影片| 免费人成动漫在线播放r18 | 亚洲国产精品综合久久网各| 日本免费高清一本视频| 中文在线观看免费网站| 亚洲五月丁香综合视频| 亚洲精品一级无码中文字幕| 91精品国产免费久久国语蜜臀| 男人的天堂av亚洲一区2区| 亚洲视频2020|