我试图找到一种方法来跟踪异步任务执行流程的方式,以便在任务中很容易理解,启动它的原始流程是什么.我需要它主要用于记录,调试和保留特定执行流的一种堆栈跟踪.
例如:如果我的服务器具有来自多个IP的许多客户端,并且服务器需要为涉及许多异步操作的每个客户端执行工作流,则每个执行流程涉及许多不同的任务; 记录这样的流程是困难的,特别是在使用async/await机制时.
我还没有找到一种方法来包装任务,对于每个执行的任务,我会在记录时知道初始流程描述.例如,如果我为具有描述的操作启动新的任务流程 - "照顾10.0.3.4客户端",我希望能够在从该流程创建的任何任务中为此流程中的每个日志项添加此描述.
仅使用线程时,它很容易,因为您有线程静态变量.任务是不可能的......我甚至试图创建我自己的任务调度程序,它将包装任何使用它的任务(即使在使用async/await方法时)但由于任务调度程序库有时会使用新线程(尽管存在没有任何使用新线程的隐式请求) - 该方法TryExecuteTaskInline有时可以在新线程中运行.
任何想法或建议我如何实现这一目标?