TaskLocal <T>类?

Mik*_*EEE 3 .net c# entity-framework task-parallel-library async-await

我们希望将TPL添加到长期运行的流程的特定部分,并且可以拆分为并发子流程.我们此时遇到的核心问题是我们当前的代码依赖于EntityFramework 6.1 DbContext,它不是线程安全的.我花了一些时间深入研究TPL及其内部工作.我们似乎不能使用ThreadLocal,因为Task可以/将在其整个生命周期中运行多个线程(如果我理解正确)并且执行任务最终将与多个ThreadLocal实例交互.

我接下来想到的是一个TaskLocal对象,它可以在任务的整个生命周期中存储DbContext(从而将它与运行相同代码的其他并发任务完全分开 - 每个任务都有自己对应的TaskLocal).

这个帖子中提到了类似的东西,但它没有提供任何代码或代码链接.

这可能吗?而且,到目前为止,我对TPL的理解是否正确?

Den*_*nis 5

实际上,.NET已经有一个:AsyncLocal<T>class.
看起来这就是你想要的.