V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
bthulu
V2EX  ›  .NET

有什么办法拦截所有的 await 做切面操作吗?

  •  
  •   bthulu · 2022-11-29 17:38:48 +08:00 · 1405 次点击
    这是一个创建于 485 天前的主题,其中的信息可能已经有所发展或是发生改变。

    比如, 类似 Serilog 那样, 可以在 await 后给日志添加一个当前线程 id, 在下一个 await 开始前清除此线程 id, 确保日志能正常记录当前线程 id, 同时又仅在线程切换时获取一次当前线程 id, 避免频繁调用.

    3 条回复    2022-12-03 20:52:19 +08:00
    hez2010
        1
    hez2010  
       2022-11-30 00:46:03 +08:00 via Android
    大概是不存在的,用 fody 或者写个 source generator 静态织入代码吧。
    GiantHard
        2
    GiantHard  
       2022-11-30 10:14:46 +08:00
    很好奇你的原始需求是什么
    INCerry
        3
    INCerry  
       2022-12-03 20:52:19 +08:00
    直接用`Thread.CurrentThread.ManagedThreadId`就可以了,这就是个属性,调 100w 次也用不了 1 毫秒。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2085 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 00:01 · PVG 08:01 · LAX 17:01 · JFK 20:01
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.