CallContext
Posted 积少成多
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CallContext相关的知识,希望对你有一定的参考价值。
1.线程本地存储区的专用集合对象,并提供对每个逻辑执行线程都唯一的数据槽。
2.数据槽不在其他逻辑线程上的调用上下文之间共享。
class Program { static Jason_TestEntities Current { get { Jason_TestEntities dbContext = CallContext.LogicalGetData("CurrentContext") as Jason_TestEntities; if (dbContext == null) { Console.WriteLine("重新获取DBContext" + Thread.CurrentThread.ManagedThreadId); dbContext = new Jason_TestEntities(); dbContext.Configuration.ValidateOnSaveEnabled = false; CallContext.LogicalSetData("CurrentContext", dbContext); } return dbContext; } } static void Main(string[] args) { for (int i = 0; i < 5; i++) { ThreadStart threadStart = new ThreadStart(select); Thread thread = new Thread(threadStart); thread.Start(); } Console.WriteLine("主线程结束"); Console.Read(); } static void select() { Console.WriteLine("线程开始" + Thread.CurrentThread.ManagedThreadId); Current.wolf_example.Add(new wolf_example() { Name = "name" + Current.wolf_example.Count(), Money = Current.wolf_example.Count(), }); Current.SaveChanges(); Console.WriteLine("线程结束" + Thread.CurrentThread.ManagedThreadId); } }
以上是关于CallContext的主要内容,如果未能解决你的问题,请参考以下文章
C# 如何保证对象线程内唯一:数据槽(CallContext)
使用CallContext存储WCF的HttpContext
74CallContext线程数据缓存-调用上下文 System.Runtime.Remoting.Messaging,JOIN序列化过程中日期的处理