如何在ExecutionContext中包含自己的数据

See*_*eeR 9 .net multithreading

我知道当你通过调用BeginInvoke()或ThreadPool.QueueUserWorkItem(...)并行运行某个方法时,.NET框架正在捕获包含代码访问安全信息和其他一些东西的ExecutionContext对象.

我想要的是在ExecutionContext中包含我的并行方法所需的一些数据,但也必须在排队任务时捕获.

问题是我并不总是能控制创建此并行任务的代码,所以我必须找到一种方法来存储这些数据,然后再调用这个外部代码.这就是为什么我想到ExecutionContext类.

当我并不总是控制在线程之间分割工作的代码时,有没有办法将某个状态传递给并行任务.

See*_*eeR 12

找到了:

CallContext.LogicalSetData(...)
Run Code Online (Sandbox Code Playgroud)

(文件)

CallContext.LogicalGetData(...)
Run Code Online (Sandbox Code Playgroud)

(文件)