首页 > 代码库 > C# 同一应用程序域不同线程之间的参数传递方式
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); }
注意里面的注释哦。
C# 同一应用程序域不同线程之间的参数传递方式
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。