西西軟件園多重安全檢測(cè)下載網(wǎng)站、值得信賴的軟件下載站!
軟件
軟件
文章
搜索

首頁(yè)編程開發(fā)C#.NET → C#中的跨線程調(diào)用

C#中的跨線程調(diào)用

相關(guān)軟件相關(guān)文章發(fā)表評(píng)論 來源:本站整理時(shí)間:2010/11/23 11:19:42字體大。A-A+

作者:佚名點(diǎn)擊:581次評(píng)論:0次標(biāo)簽: 跨線程

  • 類型:塔防游戲大。34.5M語(yǔ)言:中文 評(píng)分:10.0
  • 標(biāo)簽:
立即下載
在開發(fā)具有線程的應(yīng)用程序時(shí),有時(shí)會(huì)通過子線程實(shí)現(xiàn)Windows窗體,以及控件的操作,比如:在對(duì)文件進(jìn)行復(fù)制時(shí),為了使用戶可以更好的觀察到文件的復(fù)制情況,可以在指定的Windows窗體上顯示一個(gè)進(jìn)度條,為了避免文件復(fù)制與進(jìn)度條的同時(shí)操作所帶來的機(jī)器假死狀態(tài),可以用子線程來完成文件復(fù)制與進(jìn)度條跟蹤操作,下面以簡(jiǎn)單的例子在子線程中操作窗體中的TextBox控件。代碼如下:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

using System.Threading;//添加線程的命名空間

namespace ppp
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

Thread t; //定義線程變量

private void button1_Click(object sender, EventArgs e)
{
t = new Thread(new ThreadStart(Threadp)); //實(shí)例化線程
t.Start();//啟動(dòng)線程
}
自定義方法Threadp,主要用于線程的調(diào)用。代碼如下:
public void Threadp()
{
textBox1.Text = "實(shí)現(xiàn)在子線程中操作主線程中的控件";
t.Abort();//關(guān)閉線程
}
}

圖1 在子線程中操作主線程中控件的錯(cuò)誤提示信息:



以上是通過一個(gè)子線程來操作主線程中的控件,但是,這樣作會(huì)出現(xiàn)一個(gè)問題(如圖1所示),就是TextBox控件是在主線程中創(chuàng)建的,在子線程中并沒有對(duì)其進(jìn)行創(chuàng)建,也就是從不是創(chuàng)建控件的線程訪問它。那么,如何解決跨線程調(diào)用Windows窗體控件呢?可以用線程委托實(shí)現(xiàn)跨線程調(diào)用Windows窗體控件。下面將上一個(gè)例子進(jìn)行一下改動(dòng)。代碼如下:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

using System.Threading;//添加線程的命名空間

namespace ppp
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

Thread t; //定義線程變量

private void button1_Click(object sender, EventArgs e)
{
t = new Thread(new ThreadStart(Threadp)); //實(shí)例化線程
t.Start();//啟動(dòng)線程
}

private delegate void setText();//定義一個(gè)線程委托
自定義方法Threadp,主要用于線程的調(diào)用。代碼如下:
public void Threadp()
{
setText d = new setText(Threading); //實(shí)例化一個(gè)委托
this.Invoke(d); //在擁用此控件的基礎(chǔ)窗體句柄的線程上執(zhí)行指定的委托
}
自定義方法Threading,主要作于委托的調(diào)用。代碼如下:
public void Threading()
{
textBox1.Text = "實(shí)現(xiàn)在子線程中操作主線程中的控件";
t.Abort();//關(guān)閉線程
}
}
}
    魔獸塔防地圖
    (300)魔獸塔防地圖
    塔防,即炮塔防御的簡(jiǎn)稱,也稱。塔防受眾很廣,游戲模式簡(jiǎn)單而可玩性強(qiáng),是智力和策略的比拼。當(dāng)塔防與這兩種游戲類型融合在一起的話,游戲就會(huì)變得更好玩,同時(shí)也很休閑。小編在這里為大家搜集整理了許多魔獸爭(zhēng)霸塔防地圖,歡迎感興趣的玩家們前來下載。...更多>>
    塔防游戲
    (70)塔防游戲
    西西游戲網(wǎng)提供最新最熱門的塔防游戲,塔防游戲顧名思義就是炮塔防守游戲,玩家需要建造炮塔轟炸一些進(jìn)攻的敵人保衛(wèi)家園,塔防游戲操作都很簡(jiǎn)單,就是在最合理的位置放置炮塔,無(wú)需其他的操作,可能有的塔防游戲會(huì)添加一些技能,但是也沒什么難度的哦.熱門游戲保衛(wèi)蘿卜獸人必須死炮塔防御塔防三國(guó)志等等,太多了。...更多>>

    相關(guān)評(píng)論

    閱讀本文后您有什么感想? 已有人給出評(píng)價(jià)!

    • 8 喜歡喜歡
    • 3 頂
    • 1 難過難過
    • 5 囧
    • 3 圍觀圍觀
    • 2 無(wú)聊無(wú)聊

    熱門評(píng)論

    最新評(píng)論

    發(fā)表評(píng)論 查看所有評(píng)論(0)

    昵稱:
    表情: 高興 可 汗 我不要 害羞 好 下下下 送花 屎 親親
    字?jǐn)?shù): 0/500 (您的評(píng)論需要經(jīng)過審核才能顯示)