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

C# 委托UI控件更新例子,何时需要使用委托

1. 例子1

private void UdpRxCallBackFunc(UdpDataStruct info)
{// 1. 前置检查防止无效调用if (textBoxOutput2.IsDisposed || !textBoxOutput2.IsHandleCreated)return;// 2. 使用正确的委托类型Invoke(new Action(() =>{// 3. 双重检查确保安全if (textBoxOutput2.IsDisposed) return;try{// 4. 安全更新UItextBoxOutput2.Text = csdataUtil.ByteArrayToHexStr(info.buf, 0, info.length);}catch (Exception ex){// 5. 异常处理(可替换为日志记录)Console.WriteLine($"UDP更新失败: {ex.Message}");}}));
}

2. 例子2,安全更新封装方法

public static void SafeUpdate(Control control, Action updateAction)
{if (control.InvokeRequired)control.Invoke(updateAction);elseupdateAction();
}// 使用
SafeUpdate(textBox1, () => 
{textBox1.Text = "Updated safely";textBox1.BackColor = Color.Green;
});

3. 什么情况下使用委托

在这里插入图片描述
在这里插入图片描述

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

相关文章:

  • 大模型数据流处理实战:Vue+NDJSON的Markdown安全渲染架构
  • python项目如何创建docker环境
  • Eureka 高可用集群搭建实战:服务注册与发现的底层原理与避坑指南
  • PyTorch--池化层(4)
  • GPU加速与非加速的深度学习张量计算对比Demo,使用PyTorch展示关键差异
  • Vue中的自定义事件
  • 2025年大模型平台落地实践研究报告|附75页PDF文件下载
  • PPTAGENT:让PPT生成更智能
  • Kotlin 中 companion object 扩展函数和普通函数区别
  • 《汇编语言》第13章 int指令
  • Redis实战-基于redis和lua脚本实现分布式锁以及Redission源码解析【万字长文】
  • Ubuntu崩溃修复方案
  • 计算机网络 : 应用层自定义协议与序列化
  • Python Day42 学习(日志Day9复习)
  • CMake在VS中使用远程调试
  • 《图解技术体系》How Redis Architecture Evolves?
  • 从零搭建到 App Store 上架:跨平台开发者使用 Appuploader与其他工具的实战经验
  • Spring Cloud 2025 正式发布啦
  • 一文速通Python并行计算:12 Python多进程编程-进程池Pool
  • 相机Camera日志分析之二十五:高通相机Camx 基于预览1帧的process_capture_request四级日志分析详解
  • React从基础入门到高级实战:React 实战项目 - 项目一:在线待办事项应用
  • 云部署实战:基于AWS EC2/Aliyun ECS与GitHub Actions的CI/CD全流程指南
  • golang 如何定义一种能够与自身类型值进行比较的Interface
  • Web前端之原生表格动态复杂合并行、Vue
  • 『uniapp』把接口的内容下载为txt本地保存 / 读取本地保存的txt文件内容(详细图文注释)
  • C/C++ 面试复习笔记(2)
  • 宝马集团推进数字化转型:强化生产物流与财务流程,全面引入SAP现代架构
  • 【Redis技术进阶之路】「原理分析系列开篇」分析客户端和服务端网络诵信交互实现(服务端执行命令请求的过程 - 时间事件处理部分)
  • 【DAY40】训练和测试的规范写法
  • C语言 标准I/O函数全面指南