We recommend using Visual Studio 2017
This documentation is archived and is not being maintained.

Concurrency Visualizer Markers

In the Concurrency Visualizer, markers are icons that represent events in an app. Typically, the app generates these events to designate phases or occurrences in an application. The events can be generated by the app or by libraries and runtimes that the app uses.

The Concurrency Visualizer uses three kinds of markers to represent application events: flags, messages, and spans.

  1. Use a flag to indicate an interesting point in time in your app. For example, you might use a flag to represent that a variable value has reached a certain threshold or that an exception was thrown.

  2. A message also marks a point in time, but you can use it for log-style tracing. For example, what might have been dumped to a log file you can now wrap in a message call so that you can trace it and view it in the Concurrency Visualizer. You can also use the Concurrency Visualizer to export this data to a CSV file.

  3. A span represents an interval of time in your app, for example, one of its phases.

Each thread that generates markers has a separate timeline channel. The ID of the thread that's responsible for generating the marker events is shown next to the description of the marker channel. The ID that's shown on the left side of the marker channel matches the ID of another thread in the current process.

Markers can have one of four importance levels: low, normal, high, and critical. You can filter the sources of markers based on importance level. For example, if you only want to see markers from a particular source that has normal or critical importance, you can configure the filter in the Advanced Settings dialog box.The importance of a marker is displayed in its tooltip, and in the Markers Report.

A marker category indicates a group of marker events that come from the same source. The Concurrency Visualizer uses color to distinguish different categories of flags and spans. You can configure the Concurrency Visualizer to use categories to filter the marker events from a particular event provider. Use the Advanced Settings dialog box to configure the filter.

Any ETW provider can generate markers, as long as the provider adheres to certain constraints. You can configure the Concurrency Visualizer to listen to additional event sources for markers. By default, it listens to these event sources:

You can use the Markers tab in the Advanced Settings dialog box to control whether markers from various sources are displayed in the Concurrency Visualizer and you can filter for markers based on importance and category.

The Concurrency Visualizer can also display EventSource events. For more information, see Visualizing EventSource Events as Markers.