C# 同一应用程序域不同线程之间的参数传递方式
2014-11-06 16:30
441 查看
很久没有写博客了,最近的项目不用写代码。今天没事就看看thread之间的参数传递方式,这里主要适用于运行在不同线程的两个方法之间参数传递。直接看代码
1。方法之间直接传递参数
2。借助Static
3。借助AppDomain
4。借助CallContext
注意里面的注释哦。
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# 同一应用程序域不同线程之间的参数传递方式
- C# 同一应用程序域不同线程之间的参数传递方式
- 不同页面之间实现参数传递的几种方式讨论
- 【笔试题】不同页面之间实现参数传递的几种方式
- 不同页面之间实现参数传递的几种方式讨论
- C#给线程传递参数有3种方式
- c#使用线程传递参数的主要几种方式
- C#给线程传递参数有3种方式
- 不同页面之间实现参数传递的几种方式
- 不同页面之间实现参数传递的几种方式
- c# 不同project之间参数传递及调用
- 委托与事件的简单应用(不同控件之间的控制及参数传递,C# VB)
- [C#参考]主线程和子线程之间的参数传递
- 关于不同页面之间实现参数传递的几种方式讨论
- jmeter解决不同线程组之间传递参数问题
- Android判断网络状态是否断开+Android完全关闭应用程序+ 本文讲述了Android中不同Activity之间的数据传递 — Bundle对象的实现(-)+Android中Bundle的使用示例
- c#winform编程 窗体之间传递参数问题总结(转)
- c#线程间传递参数
- 超连接的方式给应用程序传递参数方法的实现
- C#中启动线程时,如何传递参数