C# 如何链接ETW启动/停止操作码并发事件

C# 如何链接ETW启动/停止操作码并发事件,c#,etw,C#,Etw,我正在使用ETW,并记录一些具有停止和停止操作码的事件,例如 [Event(1, Task = Tasks.ActivateTask, Opcode = EventOpcode.Start)] public void ActivateTaskStart(string TaskName) { if (IsEnabled()) { WriteEvent(1, TaskName); } } [Event(2, Task = Tasks.ActivateTask

我正在使用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开始/停止事件,如何确保事件正确配对?e、 g.如果我有:

  • Thead-A:激活任务启动
  • Thead-B:激活任务启动
后来

  • THAD-A:激活设定停止
  • Thead-B:激活设定停止
根据我对ETW文档的阅读,默认情况下会假定停止事件属于最新的、未配对的开始事件-但我想确保我链接了正确的开始/停止事件

可能吗?如果是,怎么做

为了使这更复杂,有可能启动和停止事件可能来自不同的线程(如果需要,我应该能够使线程保持粘性)。

这被称为。要使其自动工作,您不能使用自己的线程实现,必须将所有调用包装到System.Threading.Tasks.Task调用中