Пример #1
0
 internal void TaskLaunchedForMessageHandling(
     IDataflowBlock block, Task task, TaskLaunchedReason reason, int availableMessages)
 {
     Contract.Requires(block != null, "Block needed for the ETW event.");
     Contract.Requires(task != null, "Task needed for the ETW event.");
     Contract.Requires(reason == TaskLaunchedReason.ProcessingInputMessages || reason == TaskLaunchedReason.OfferingOutputMessages,
                       "The reason should be a supported value from the TaskLaunchedReason enumeration.");
     if (IsEnabled(EventLevel.Informational, ALL_KEYWORDS))
     {
         TaskLaunchedForMessageHandling(Common.GetBlockId(block), reason, availableMessages, task.Id);
     }
 }
Пример #2
0
        private void TaskLaunchedForMessageHandling(int blockId, TaskLaunchedReason reason, int availableMessages, int taskId)
        {
            // There is no explicit WriteEvent() overload matching this event's fields:
            //     WriteEvent(TASKLAUNCHED_EVENTID, blockId, (int)reason, availableMessages, taskId);
            // Therefore this call would hit the "params" overload, which leads to multiple object
            // allocations every time this event is fired.

            if (t_sharedArray == null)
            {
                t_sharedArray = new object[4];
            }
            t_sharedArray[0] = blockId;
            t_sharedArray[1] = (int)reason;
            t_sharedArray[2] = availableMessages;
            t_sharedArray[3] = taskId;

            WriteEvent(TASKLAUNCHED_EVENTID, t_sharedArray);
        }
Пример #3
0
 private void TaskLaunchedForMessageHandling(int blockId, TaskLaunchedReason reason, int availableMessages, int taskId)
 {
     WriteEvent(TASKLAUNCHED_EVENTID, blockId, reason, availableMessages, taskId);
 }