gpt4 book ai didi

c# - 如何链接 ETW 启动/停止 Opcode 并发事件

转载 作者:行者123 更新时间:2023-11-30 16:05:34 26 4
gpt4 key购买 nike

我正在使用 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

根据我对 ETW 文档的阅读,它默认假设停止事件属于最近的、未配对的开始事件——但我想确保我正在链接正确的开始/停止事件。

这可能吗?如果是,怎么办?

为了让事情变得更复杂,Start 和 Stop 事件有可能来自不同的线程(如果需要,我应该能够使线程保持粘性)。

最佳答案

这叫做 ActivityTrackig and works since .Net 4.6 .要使其自动运行,您不能使用自己的 Thread 实现,您必须将所有调用包装到 System.Threading.Tasks.Task 调用中。

关于c# - 如何链接 ETW 启动/停止 Opcode 并发事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33279820/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com