首页 > 解决方案 > 读取给定线程的 AsyncLocal 值

问题描述

有没有办法像另一个线程看到的那样读取AsyncLocal值的值?

假设我有一个线程正在执行并且我在那里设置了一个值。现在从另一个线程,使用反射或Microsoft.Diagnostics.Runtime之类的方法,我想读取 thisAsyncLocal的值并获取如果我从第一个线程访问它会返回的值。我想从外部观察另一个异步流中有什么价值。

我知道它是如何AsyncLocal工作的,并且它不是线程“固定”的值。但我想知道特定线程在读取AsyncLocal.

重要的

过去,我在线程中具有价值,LogicalCallContext并且ExecutionContext能够通过反射阅读它。所以现在我寻找一种适用于AsyncLocal. 它的实际应用是诊断功能。

更新

看看AsyncLocale 这里的代码让我觉得可能有一种方法可以以某种方式检索这些信息。但是当我尝试时,我只看到我能够阅读一些 AsyncLocales,但不是我真正要寻找的。所以我很想知道这些信息在 CLR 中的位置。AsyncLocaleCLR中的生活数据在哪里?

标签: c#multithreadingasynchronous

解决方案


推荐阅读