gpt4 book ai didi

c# - 在等待期间保持不变的 CurrentManagedThreadId 的替代方案?

转载 作者:行者123 更新时间:2023-11-30 20:46:04 26 4
gpt4 key购买 nike

在我的 C# 日志记录类中,我在日志输出中显示 CurrentManagedThreadId,以便可以跟踪特定的执行线程。我还使用线程 ID 作为唯一键来管理每个线程的缩进级别(以显示跟踪输出中的嵌套)。

我才刚刚意识到 await 并不总是在同一个线程上返回。我不确定为什么我以前没有注意到这一点,但我现在在运行 WinRT 单元测试时肯定会看到它。

是否有某种“逻辑线程 ID”(“上下文 ID”?)是唯一的(在并发运行的线程中),并且在等待的方法调用中保持不变?

我正在为 .NET Framework(桌面)和 WinRT Win8/8.1 进行开发。

最佳答案

简短的回答是“不”。

如果您想在 WinRT 上跟踪因果关系堆栈,您唯一的选择是按照 in this MSDN article 所述修改应用程序中的每个 await .

桌面上有更多选项。比如我的async diagnostics library将 PostSharp 与 LogicalCallStack(一种技术 I describe on my blog)结合使用来为您跟踪因果堆栈。

关于c# - 在等待期间保持不变的 CurrentManagedThreadId 的替代方案?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27435558/

26 4 0
文章推荐: 编译器不会提示错误的语法
文章推荐: c# - 无法从 Windows 窗体应用程序中的 app.config 连接到本地 SQL 数据库
文章推荐: c - 为什么声明 Clock_t 类型整数会改变我的 C 程序?
文章推荐: c# - 将 List 转换为未知类型