如何链接ETW启动/停止操作码并发事件
本文关键字:操作码 事件 并发 启动 ETW 何链接 链接 | 更新日期: 2023-09-27 18:18:45
我正在使用ETW,并记录一些有停止&停止操作码,例如
[Event(1, Task = Tasks.ActivateTask, Opcode = EventOpcode.Start)]
public void ActivateTaskStart(string TaskName)
{
if (IsEnabled())
{
WriteEvent(1, TaskName);
}
}
[Event(2, Task = Tasks.ActivateTask, Opcode = EventOpcode.Stop)]
public void ActivateTaskStop(string TaskName)
{
if (IsEnabled())
{
WriteEvent(2, TaskName);
}
}
如果我有两个线程都记录ActivateTask启动/停止事件,我如何确保事件正确配对?如果我有:
- Thead-A: ActivateTaskStart
- Thead-B: ActivateTaskStart
之后
- Thead-A: ActivateTaskStop
- Thead-B: ActivateTaskStop
这可能吗?如果有,怎么做?
更复杂的是,Start和Stop事件可能来自不同的线程(如果我需要,我应该能够使线程保持粘性)。
这叫做ActivityTrackig,从。net 4.6开始工作。要使其自动工作,您不能使用自己的Thread实现,您必须将所有调用包装到System.Threading.Tasks.Task调用中。