C# 同一应用程序域不同线程之间的参数传递方式
很久没有写博客了,最近的项目不用写代码。今天没事就看看thread之间的参数传递方式,这里主要适用于运行在不同线程的两个方法之间参数传递。直接看代码
1。方法之间直接传递参数
void DemoParam() { Console.WriteLine("DemoParam:" + Thread.CurrentThread.ManagedThreadId); //Thread t = new Thread(new ParameterizedThreadStart(testparam)); //t.Start("majaing"); ThreadPool.QueueUserWorkItem(new WaitCallback(testparam),"majaing"); } void testparam(object obj) { Console.WriteLine("DemoParam:" + Thread.CurrentThread.ManagedThreadId); Console.WriteLine(obj.ToString()); }
2。借助Static
//[ThreadStatic] static string namekey; void DemoStatic() { Console.WriteLine("Static:" + Thread.CurrentThread.ManagedThreadId); namekey = "majiang"; ThreadPool.QueueUserWorkItem(new WaitCallback(testStatic)); } void testStatic(object obj) { Console.WriteLine("Static:" + Thread.CurrentThread.ManagedThreadId); Console.WriteLine(namekey); }
3。借助AppDomain
void DemoAppDomain() { Console.WriteLine("AppDomain:"+Thread.CurrentThread.ManagedThreadId); AppDomain.CurrentDomain.SetData("name", "majiang"); ThreadPool.QueueUserWorkItem(new WaitCallback(testAppDomain)); } void testAppDomain(object obj) { Console.WriteLine("AppDomain:"+Thread.CurrentThread.ManagedThreadId); var a = AppDomain.CurrentDomain.GetData("name"); Console.WriteLine(a); }
4。借助CallContext
void DemoCallContext() { Console.WriteLine("CallContext"+Thread.CurrentThread.ManagedThreadId); // ExecutionContext.SuppressFlow(); CallContext.LogicalSetData("name", "majiang"); ThreadPool.QueueUserWorkItem(new WaitCallback(testCallContext)); } void testCallContext(object obj) { Console.WriteLine("CallContext"+Thread.CurrentThread.ManagedThreadId); var a = CallContext.LogicalGetData("name"); Console.WriteLine(a); }
注意里面的注释哦。
windows技术爱好者
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
2012-11-06 HttpResponse的Output与OutputStream、Filter关系与区别
2012-11-06 Asp.net请求处理之 管道处理