当前位置: 首页 > news >正文

C#的委托

方法一

private void button1_Click(object sender, EventArgs e)
{// 启动后台线程  Thread backgroundThread = new Thread(new ThreadStart(DoWork));backgroundThread.Start();
}private void DoWork()
{// 模拟后台工作  Thread.Sleep(2000); // 等待2秒以模拟工作  // 更新UI(需要在UI线程上执行)  UpdateTextBox("后台工作已完成!");
}private void UpdateTextBox(string text)
{// 检查是否需要在UI线程上调用  if (textBox1.InvokeRequired){// 使用Invoke方法将更新操作封送到UI线程(同步)  // 也可以使用BeginInvoke进行异步调用  textBox1.Invoke(new Action<string>(UpdateTextBox), text);}else{// 直接更新UI元素(已在UI线程上)  textBox1.Text = text;}
}

方法二

// 假设这是在非UI线程中  
this.Invoke(new Action(() =>  
{  // 这段代码将在UI线程上执行  this.label1.Text = "Updated from non-UI thread";  
}));

方法三
无参数、无返回值的委托(例如Action):

Action greet = () => Console.WriteLine("Hello, world!");  
greet(); // 输出: Hello, world!

有参数、无返回值的委托(例如Action<T>):

Action<string> printMessage = message => Console.WriteLine(message);  
printMessage("Hello, lambda!"); // 输出: Hello, lambda!

有参数、有返回值的委托(例如Func<T, TResult>):

Func<int, int> square = x => x * x;  
int result = square(5); // result 是 25

带有多个参数的lambda表达式:

Func<int, int, int> add = (a, b) => a + b;  
int sum = add(3, 4); // sum 是 7

http://www.lryc.cn/news/466594.html

相关文章:

  • 软考(网工)——局域网和城域网
  • MySQL 9从入门到性能优化-通用查询日志
  • 解码专业术语——应用系统开发项目中的专业词汇解读
  • 高级java每日一道面试题-2024年10月18日-JVM篇-说下你对G1垃圾收集器的理解?
  • 2024系统架构师---湖仓一体架构论文知识点
  • Unity性能优化
  • MyHdfs代码分享
  • Java网络编程-简单的API调用
  • 论文笔记(五十)Segmentation-driven 6D Object Pose Estimation
  • 微服务的一些基本概念
  • el-table修改指定列字体颜色 ,覆盖划过行的高亮显示文字颜色
  • java高频面试题汇总
  • Docker安装ocserv教程(效果极佳)
  • 【数据结构与算法】第3课—数据结构之单链表
  • linux—基础命令及相关知识
  • Spring Boot 实现 WebSocket(注解方式)
  • windows下Qt的安装方法
  • 嵌入式面试题 ARM常见面试题
  • 分布式调度器--Spring Task 的使用
  • Java应用程序的测试覆盖率之设计与实现(四)-- jacoco-maven-plugin
  • UI 提供的 progress-step 要怎么实现?
  • DBSwitch和Seatunel
  • 【日志】力扣刷题 -- 轮转数组
  • Java 项目 Dockerfile 示例:从基础镜像选择到环境变量配置的详细指南
  • WebGL编程指南 - 高级变换与动画基础
  • 银行客户贷款行为数据挖掘与分析
  • 制程质量管理方案设计
  • uniapp移动端优惠券! 附源码!!!!
  • 【分布式技术】中间件-zookeeper安装配置
  • 高等数学 7.6高阶线性微分方程