很久没有写博客了,最近的项目不用写代码。今天没事就看看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# 同一应用程序域不同线程之间的参数传递方式的更多相关文章

  1. jmeter中线程之间传递参数

    JMeter 变量作用域局限于所属线程.这样设计是经过深思熟虑的,目的是让测试线程能够独立运转.有时候用户可能需要在不同线程间(可能属于同一个线程组,也可能不属于同一个线程组)传递变量. 其中一种方法 ...

  2. Jmeter 线程之间传递参数

    1.获取返回结果中的值,设置为变量 2.在该请求下,添加BeanShell PostProcessor插件,使用__setProperty函数,将之前的变量转换成全局变量 3.在另一个线程组中引用该变 ...

  3. 基础学习day12--多线程一线程之间的通信和常用方法

    一.线程之间的通信 1.1.线程之间的通信方法 多个线程在处理统一资源,但是任务却不同,这时候就需要线程间通信.    等待/唤醒机制涉及的方法:    1. wait():让线程处于冻结状态,被wa ...

  4. [转]C#综合揭秘——细说进程、应用程序域与上下文之间的关系

    引言 本文主要是介绍进程(Process).应用程序域(AppDomain)..NET上下文(Context)的概念与操作.虽然在一般的开发当中这三者并不常用,但熟悉三者的关系,深入了解其作用,对提高 ...

  5. Android消息机制之实现两个不同线程之间相互传递数据相互调用

    目的:实现两个不同线程之间相互传递数据相互调用方法. 线程一中定义mainHandler 并定义一个方法mainDecode 线程二中定义twoHandler 并定义一个方法twoEncode 实现当 ...

  6. VC中利用多线程技术实现线程之间的通信

    当前流行的Windows操作系统能同时运行几个程序(独立运行的程序又称之为进程),对于同一个程序,它又可以分成若干个独立的执行流,我们称之为线程,线程提供了多任务处理的能力.用进程和线程的观点来研究软 ...

  7. [C#参考]细说进程、应用程序域与上下文之间的关系

    原文转载链接:http://www.cnblogs.com/leslies2/archive/2012/03/06/2379235.html Written by:风尘浪子 引言 本文主要是介绍进程( ...

  8. C#综合揭秘——细说进程、应用程序域与上下文之间的关系

    引言 本文主要是介绍进程(Process).应用程序域(AppDomain)..NET上下文(Context)的概念与操作.虽然在一般的开发当中这三者并不常用,但熟悉三者的关系,深入了解其作用,对提高 ...

  9. 第五节:Task构造函数之TaskCreationOptions枚举处理父子线程之间的关系。

    一. 整体说明 揭秘: 通过F12查看Task类的源码(详见下面的截图),发现Task类的构造函数有有一个参数为:TaskCreationOptions类型,本章节可以算作是一个扩展章节,主要就来研究 ...

随机推荐

  1. python标准库--functools.partial

        官方相关地址:https://docs.python.org/3.6/library/functools.html 一.简单介绍: functools模块用于高阶函数:作用于或返回其他函数的函 ...

  2. span 居中

    韩梦飞沙  韩亚飞  313134555@qq.com  yue31313  han_meng_fei_sha ====== 把span 升级为块级元素,div 的宽度.然后使用定位,添加 text- ...

  3. CentOS 7下安装nexus 3

    安装nexus 3的几个注意事项: 1.nexus 3和nexus 2不一样,nexus 2可以搜索Maven主仓库的包,但在nexus 3不能,只能搜索缓存过的包. 2.安装时关心的点在于运行环境, ...

  4. Android app开发中用户协议(使用条款)文字自己主动换行

    用户协议(使用条款)文字自己主动换行处理 转载请注明出处:http://blog.csdn.net/u012301841/article/details/46648821 我们在开发app的时候.常常 ...

  5. USBDM RS08/HCS08/HCS12/Coldfire V1,2,3,4/DSC/Kinetis Debugger and Programmer -- Driver Install

    Installation of USBDM USB drivers for Windows There are four installers provided: USBDM_Drivers_x_x_ ...

  6. Timer-triggered memory-to-memory DMA transfer demonstrator

    http://www.efton.sk/STM32/bt.c // Timer-triggered memory-to-memory DMA transfer demonstrator for STM ...

  7. C#获取文件夹及文件的大小与占用空间的方法

    本文详细介绍了利用C#实现根据路径,计算这个路径所占用的磁盘空间的方法 . 网上有很多资料都是获取文件夹/文件的大小的.对于占用空间的很少有完整的代码.这里介绍实现这一功能的完整代码,供大家参考一下. ...

  8. 在ASP.NET MVC下限制同一个IP地址单位时间间隔内的请求次数

    有时候,当用户请求一个Controller下的Action,我们希望,在单位时间间隔内,比如每秒,每分钟,每小时,每天,每星期,限制同一个IP地址对某个Action的请求次数.如何做呢? stefan ...

  9. 字符串类型的变量,也要进行alloc内存分配之后才能用

    nss_upperName =[[NSStringalloc]initWithString:labTopTitle.text]; nss_upperName =labTopTitle.text; // ...

  10. Javascript 身份证号获得出生日期、获得性别、检查身份证号码

    //---------------------------------------------------------- // 功能:根据身份证号获得出生日期 // 参数:身份证号 psidno // ...