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); } }
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); }
private void TaskLaunchedForMessageHandling(int blockId, TaskLaunchedReason reason, int availableMessages, int taskId) { WriteEvent(TASKLAUNCHED_EVENTID, blockId, reason, availableMessages, taskId); }