C#委托基础9——Invoke与委托

例一

[csharp]  view plain copy print ?
  1. delegate void AppendStringCallback(string text);  
  2.   
  3. private void AppendString(string txt)  
  4. {  
  5.      this.listView1.Items.Add(txt);  
  6. }  
  7.   
  8.    
  9.   
  10. private void ReceiveDate()  
  11.   
  12. {  
  13.   
  14.      AppendStringCallback appendStringCallback = new AppendStringCallback(AppendString);  
  15.   
  16.      this.Invoke(appendStringCallback, new object[] { string.Format("{0},{1},{2}", str1, str2  
  17.   
  18.                  + "号", iepAddress.ToString()) });  
  19.   
  20. }  


 

 

例二 

[csharp]  view plain copy print ?
  1. namespace ThreadPoolDemo    
  2. {    
  3.     public partial class ThreadForm : Form    
  4.     {    
  5.         // 定义delegate以便Invoke时使用    
  6.         private delegate void SetProgressBarValue(int value);     
  7.          
  8.   
  9.         // 跟SetProgressBarValue委托相匹配的方法    
  10.         private void SetProgressValue(int value)    
  11.        {    
  12.            progressBar.Value = value;    
  13.        }  
  14.   
  15.   
  16.         // 使用Invoke方法来设置进度条    
  17.         private void RunWithInvoke()    
  18.         {    
  19.             int value = progressBar.Value;    
  20.             while (value< progressBar.Maximum)    
  21.             {    
  22.                 //如果是跨线程调用    
  23.                 if (InvokeRequired)    
  24.                 {    
  25.                     this.Invoke(new SetProgressBarValue(SetProgressValue), value++);    
  26.                 }    
  27.                 else   
  28.                 {    
  29.                     progressBar.Value = ++value;    
  30.                 }    
  31.             }    
  32.         }     
  33.   
  34.   
  35.         public ThreadForm()    
  36.         {    
  37.             InitializeComponent();    
  38.         }     
  39.       
  40.         private void btnInvoke_Click(object sender, EventArgs e)    
  41.         {    
  42.             progressBar.Value = 0;    
  43.             Thread thread = new Thread(new ThreadStart(RunWithInvoke));    
  44.             thread.Start();    
  45.         }     
  46.   
  47.      }    
  48. }  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值