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

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

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

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

作者:佚名點擊:581次評論:0次標簽: 跨線程

  • 類型:塔防游戲大小:34.5M語言:中文 評分:10.0
  • 標簽:
立即下載
在開發(fā)具有線程的應(yīng)用程序時,有時會通過子線程實現(xiàn)Windows窗體,以及控件的操作,比如:在對文件進行復(fù)制時,為了使用戶可以更好的觀察到文件的復(fù)制情況,可以在指定的Windows窗體上顯示一個進度條,為了避免文件復(fù)制與進度條的同時操作所帶來的機器假死狀態(tài),可以用子線程來完成文件復(fù)制與進度條跟蹤操作,下面以簡單的例子在子線程中操作窗體中的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)); //實例化線程
t.Start();//啟動線程
}
自定義方法Threadp,主要用于線程的調(diào)用。代碼如下:
public void Threadp()
{
textBox1.Text = "實現(xiàn)在子線程中操作主線程中的控件";
t.Abort();//關(guān)閉線程
}
}

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



以上是通過一個子線程來操作主線程中的控件,但是,這樣作會出現(xiàn)一個問題(如圖1所示),就是TextBox控件是在主線程中創(chuàng)建的,在子線程中并沒有對其進行創(chuàng)建,也就是從不是創(chuàng)建控件的線程訪問它。那么,如何解決跨線程調(diào)用Windows窗體控件呢?可以用線程委托實現(xiàn)跨線程調(diào)用Windows窗體控件。下面將上一個例子進行一下改動。代碼如下:
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)); //實例化線程
t.Start();//啟動線程
}

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

    相關(guān)評論

    閱讀本文后您有什么感想? 已有人給出評價!

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

    熱門評論

    最新評論

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

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