[英]How to link ETW start/stop Opcode concurrent events
我正在使用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啟動/停止事件,我如何確保事件正確配對? 如果我有:
然后
從我閱讀ETW文檔中,它將默認假設Stop事件屬於最新的,未配對的Start事件 - 但我想確保我鏈接正確的Start / Stop事件。
那可能嗎? 如果是這樣,怎么樣?
為了使這更復雜,Start和Stop事件可能來自不同的線程(如果我需要,我應該能夠使線程變粘)。
這稱為ActivityTrackig,自.Net 4.6以來一直有效 。 要自動運行,您不能使用自己的Thread實現,必須將所有調用包裝到System.Threading.Tasks.Task調用中。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.