C#中工作线程处理完数据后将处理结果返回给UI主线程通知主线程操作界面
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading; //线程类:暂停函数 namespace Program { class Program { static void Main(string[] args) { //方法1: //Action<Student> callback = ((Student st) => { Console.WriteLine(st.Name); });//lambda 表达式 //方法3: Action<Student> callback = ShowName; Thread th = new Thread(Fun); th.IsBackground = true; th.Start(callback); Console.ReadKey(); } private static void Fun(object obj) { for (int i = 1; i <= 10; i++) { Console.WriteLine("子线程循环操作第 {0} 次", i); Thread.Sleep(500); } Action<Student> callback = obj as Action<Student>; Student st = new Student(); st.ID = 1; st.Name = "Long"; st.Age = 20; callback(st); } //方法2:上面的Lambda表达式也可以回城匿名函数 private static Action<Student> callback = delegate(Student st) { Console.WriteLine(st.Name); }; //方法3: private static void ShowName(Student st) { Console.WriteLine(st.Name); } } }
其中,Student类的定义如下:
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Program { public class Student { public int ID; public string Name; public int Age; } }
分类:
C#与.NET
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理