在我的C#日志记录类中,我在日志输出中显示CurrentManagedThreadId
,以便可以遵循特定的执行线程。我还将线程ID用作管理每个线程缩进级别的唯一键(以显示跟踪输出中的嵌套)。
我只是意识到await
并不总是返回同一线程。我不确定为什么以前没有注意到这一点,但是当我运行WinRT单元测试时,我现在肯定会看到它。
是否有某种“逻辑线程ID”(“上下文ID”?)是唯一的(在并发运行的线程中),并且在等待的方法调用中保持不变?
我正在为.NET Framework(桌面)和WinRT Win8 / 8.1开发。
最佳答案
最简洁的答案是不”。
如果要在WinRT上跟踪因果关系堆栈,则唯一的真实选择是按in this MSDN article所述修改应用程序中的每个await
。
您在桌面上有更多选择。例如,我的async diagnostics library将PostSharp与LogicalCallStack
结合使用(我是describe on my blog的一种技术)来为您跟踪因果关系堆栈。
关于c# - 替代CurrentManagedThreadId,在等待期间保持不变?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27435558/