我们希望将TPL添加到长期运行的流程的特定部分,并且可以拆分为并发子流程。我们此时遇到的核心问题是我们当前的代码依赖于EntityFramework 6.1 DbContext,它不是线程安全的。我花了一些时间深入研究TPL及其内部工作。我们似乎不能使用ThreadLocal,因为Task可以/将在其整个生命周期内运行多个线程(如果我理解正确)并且执行任务最终将与多个ThreadLocal实例进行交互。
我接下来想到的是一个TaskLocal对象,它可以在任务的整个生命周期中存储DbContext(从而将它与运行相同代码的其他并发任务完全分开 - 每个任务都有自己对应的TaskLocal)。
在this thread中提到了类似的内容,但它没有提供任何代码或代码链接。
这可能吗?而且,到目前为止,我对TPL的理解是否正确?