轉:C# 通過委託更新UI(非同步載入)

來源:互聯網
上載者:User

標籤:

來自:http://blog.csdn.net/gongzhe2011/article/details/27351853

using System.Windows.Forms;using System.Threading;using System;namespace Threaddemo1{ public partial class Form1 : Form { public Form1() { InitializeComponent(); } delegate void aa(string s);//建立一個代理 private void Form1_Load(object sender, EventArgs e) { Thread newthread = new Thread(new ThreadStart(ttread)); newthread.Start(); } void ttread() { pri("77"); } private delegate void ProgressBarShow(int i); private void pri(string p) { bool name = richTextBox1.InvokeRequired; //MessageBox.Show(name.ToString()); if (!richTextBox1.InvokeRequired)//判斷是否需要進行喚醒的請求,如果控制項與主線程在一個線程內,可以寫成if(!InvokeRequired) { Loadthread(); } else { // MessageBox.Show("不是同一個線程"); aa a1 = new aa(pri); Invoke(a1, new object[] { p });//執行喚醒操作 } } private void Loadthread() { string s = string.Empty; for (int b = 0; b < 10000; b++) { this.ShowPro(b); s += b.ToString(); } //MessageBox.Show("同一線程內"); LoadRichebox(s); } void send() { Thread.CurrentThread.Abort(); } private void LoadRichebox(string s) { richTextBox1.Text = s; } private void ShowPro(int value) { if (this.InvokeRequired) { this.Invoke(new ProgressBarShow(ShowPro), value); } else { this.progressBar1.Value = value; this.label1.Text = value + "% Processing..."; } } }}

 

轉:C# 通過委託更新UI(非同步載入)

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.