压根名听说过这个类的看这里:如何实现对上下文(Context)数据的统一管理

原来以为CallContext就可以直接在多线程环境下面共享使用的,今天突然想到:Asp.Net环境下面,设置来设置去的,对象不就被多个客户端搞乱了吗?

随做了以下代码测试:

static void Main(string[] args)
{
CallContext.LogicalSetData("key", "1"); Thread trd = new Thread(new ThreadStart(() =>
{ Console.WriteLine("first thread : " + CallContext.LogicalGetData("key")); Thread.Sleep(1000); Console.WriteLine("first thread : " + CallContext.LogicalGetData("key")); }));
trd.Start();
Thread.Sleep(100); CallContext.LogicalSetData("key", "2"); Thread trd1 = new Thread(new ThreadStart(() =>
{ Console.WriteLine("second thread : " + CallContext.LogicalGetData("key")); }));
trd1.Start(); Console.Read();
}

结果是这个鸟样子:

看来是我想多了啊,汗。。。

摘抄一段官方点的说明(来自artech大神的博客):

LogicalCallContext:LogicalCallContext 类是在对远程应用程序域进行方法调用时使用的 CallContext 类的一个版本。CallContext 是类似于方法调用的线程本地存储的专用集合对象,并提供对每个逻辑执行线程都唯一的数据槽。数据槽不在其他逻辑线程上的调用上下文之间共享。当 CallContext 沿执行代码路径往返传播并且由该路径中的各个对象检查时,可将对象添加到其中。当对另一个 AppDomain 中的对象进行远程方法调用时CallContext 类将生成一个与该远程调用一起传播的 LogicalCallContext。只有公开 ILogicalThreadAffinative 接口并存储在 CallContext 中的对象被在 LogicalCallContext 中传播到 AppDomain 外部。不支持此接口的对象不在 LogicalCallContext 实例中与远程方法调用一起传输。

"CallContext 类将生成一个与该远程调用一起传播的 LogicalCallContext。"

这里应该是说只管传递过去,不管引用关系了,类似“值传递”吧。

欢迎大神斧正。。。

最新文章

  1. Error connecting to database [Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (13)]
  2. Java Web之网上购物系统(提交订单、查看我的订单)
  3. js 页面刷新location.reload和location.replace的区别小结
  4. python re 模块和基础正则表达式
  5. Java系列--第二篇 基于Maven的Android开发HelloAndroidWorld
  6. SSDB是一个开源的高性能数据库服务器
  7. flash2print文档在线预览应用(java,.net)
  8. Spring【依赖注入】就是这么简单
  9. C语言 > 指向指针的指针
  10. C-static,auto,register,volatile
  11. plsql导入.dmp, .sql步骤
  12. VBA 插入图片到指定单元格并保存图片为图片文件
  13. Spring AOP实战例子与springmvc整合不起效果的解决办法
  14. 比特币中的Base58 编码
  15. solrcloud编辑zookeeper上的配置文件的方法
  16. requests支持socks5代理了
  17. TCP粘包问题
  18. 【JavaScript从入门到精通】第一课 初探JavaScript魅力-01
  19. vue-cli脚手架build目录中的build.js配置文件
  20. 从新安装SQLserver 过程中报错问题合集

热门文章

  1. rman理论(一)
  2. AtCoder Regular Contest 068E:Snuke Line
  3. UGUI ScrollRect滑动居中CenterOnChild实现
  4. mysql Split函数
  5. windows64位如何安装pyspider并运行
  6. The Truth About GCHandles
  7. C# 获取外网IP和运营商和城市
  8. Linux绘图函数
  9. JavaScript 语言的历史
  10. 机器学习中的L1、L2正则化