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 = ; i < ; 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,ok看下msdn对callcontent的解释. Ca ...
- EF 用CallContext上下文管理
public class ObjectContextFactory { private static CIK_NewsEntities context; public static DbContext ...
- 记一次系统稳定性问题的分析处理过程(因CallContext使用不当而造成bug)
问题描述: 一个项目现场反馈,“差旅费类型的单据审批,在出现业务规则没满足的情况时(即业务报错,需要人机交互),审批仍然通过了”.从技术的角度上说,就是业务构件中的业务规则报错后,事务没有回滚.但是, ...
- 关于callContext
coding们肯定有这种需求,在程序中,方法一级级调下去,比如A->b->C->D.... ->Z.在调用过程中,希望在调用函数之间传递一些数据,常见的是将特定的数据从高往低处 ...
- CallContext和多线程
前一段时间正好要在某个网页程序上开一个多线程调用多个组件的尝试,这些组件是有其他团队开发的(如:印度/俄罗斯),所以修改它们的代码看起来是不太现实的,但是,令人恼火的是他们的代码中大量的用到了AppC ...
- C# 如何保证对象线程内唯一:数据槽(CallContext)【转载】
如果说,一个对象保证全局唯一,大家肯定会想到一个经典的设计模式:单例模式,如果要使用的对象必须是线程内唯一的呢? 数据槽:CallContext,ok看下msdn对callcontent的解释. Ca ...
- CallContext,ThreadStatic,AsyncLocal<T>,ThreadLocal<T>,学习笔记
1.CallContext 在当前调用上下文的线程数据槽里存储对象 2.ThreadStatic 是一个特性 3.AsyncLocal<T> 是一个类型,该字段应当为static,保证单例 ...
- C# 调用线程并行上下文穿透-ILogicalThreadAffinative+CallContext
na mespace System.Runtime.Remoting.Messaging { /// <summary>Provides a set of properties that ...
- Entity Framework Context上下文管理(CallContext 数据槽)
Context上下文管理 Q1:脏数据 Q2:一次逻辑操作中,会多次访问数据库,增加了数据库服务器的压力 >在一次逻辑操作中实现上下文实例唯一 方法一:单例模式:内存的爆炸式增长 在整个运行期间 ...
随机推荐
- async_mongo_helper
# -*- coding: utf-8 -*- # @Time : 2019/1/7 2:11 PM # @Author : cxa # @File : motortesdt.py # @Softwa ...
- 关于DateTime自带的AddSeconds等函数的坑
在此记录一下今天在写一个进程查杀小程序时碰到的关于DateTime的问题: 第一次是用AddSeconds后的时间直接和DateTime.Now做相等判断. class Program { stat ...
- Apollo-3.0本地编译
Apollo-3.0本地编译 用docker编译所用的dev.x86_64.dockerfile文件(具体位置在apollo/docker/build)中有所有的依赖库或包, 还会执行一些shell脚 ...
- cef_binary_3.2623.1401.gb90a3be
这个资源现在很难搜索到 分享给大家 http://www.ceffans.com/forum.php?mod=viewthread&tid=9 http://pan.baidu.com/sha ...
- Scientific Toolworks Understand
Scientific Toolworks Understand是一款定位于代码阅读的软件.界面用Qt开发的. 软件特性: 1.支持多语言:Ada, C, C++, C#, Java, FORTRAN, ...
- gcc/g++基本命令
gcc & g++现在是gnu中最主要和最流行的c & c++编译器 .g++是c++的命令,以.cpp为主,对于c语言后缀名一般为.c.这时候命令换做gcc即可.其实是无关紧要的.其 ...
- [HTTP]Etag的工作流程
1. 浏览器首次访问该资源时,web服务器返回资源的同时,响应报文头携带ETag标签: 2. 浏览器将保存该Etag标签的值: 3. 当浏览器发起下一次请求,请求报文头将会携带 If-None-Mat ...
- 28)django-form+ajax实现验证
form+ajax实现验证 #obj.errors返回的是ErrorDict,不是字典(虽然继承字典) #obj.errors.as_json() 返回的字符串(前端要连续反解两次) #obj.err ...
- Android广播机制
原文出处: Android总结篇系列:Android广播机制 1.Android广播机制概述 Android广播分为两个方面:广播发送者和广播接收者,通常情况下,BroadcastReceiver指的 ...
- centos6.5 有趣但是没有用的linux命令
小火车 get http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm rpm -ivh epel-rele ...