Beispiel #1
0
        /// <summary>
        /// Add markers to annotate the threads graph with our thread names.
        /// </summary>
        public static void AddThreadName()
        {
            if (string.IsNullOrEmpty(Thread.CurrentThread.Name))
            {
                return;
            }
            MarkerSeries flagSeries = Markers.DefaultWriter.CreateMarkerSeries(Thread.CurrentThread.Name);

            flagSeries.WriteFlag(Thread.CurrentThread.Name);
        }
 internal static void Visualize <TSource>(
     this ParallelQuery <TSource> source, Action <TSource> action, string span = Parallel, int category = 1)
 {
     using (Markers.EnterSpan(category, span))
     {
         MarkerSeries markerSeries = Markers.CreateMarkerSeries(span);
         source.ForAll(value =>
         {
             using (markerSeries.EnterSpan(Thread.CurrentThread.ManagedThreadId, value.ToString()))
             {
                 action(value);
             }
         });
     }
 }
 internal static void Visualize <TSource>(
     this IEnumerable <TSource> source, Action <TSource> action, string span = Sequential, int category = 0)
 {
     using (Markers.EnterSpan(category, span))
     {
         MarkerSeries markerSeries = Markers.CreateMarkerSeries(span);
         source.ForEach(value =>
         {
             using (markerSeries.EnterSpan(Thread.CurrentThread.ManagedThreadId, value.ToString()))
             {
                 action(value);
             }
         });
     }
 }
Beispiel #4
0
 internal static void Visualize <TSource>(
     this ParallelQuery <TSource> source,
     Action <ParallelQuery <TSource>, Action <TSource> > query,
     Action <TSource> iteratee, string span = ParallelSpan, int category = -2)
 {
     using (Markers.EnterSpan(category, span))
     {
         MarkerSeries markerSeries = Markers.CreateMarkerSeries(span);
         query(
             source,
             value =>
         {
             using (markerSeries.EnterSpan(Thread.CurrentThread.ManagedThreadId, value.ToString()))
             {
                 iteratee(value);
             }
         });
     }
 }
Beispiel #5
0
        internal static TResult Visualize <TSource, TMiddle, TResult>(
            this ParallelQuery <TSource> source,
            Func <ParallelQuery <TSource>, Func <TSource, TMiddle>, TResult> query,
            Func <TSource, TMiddle> iteratee,
            Func <TSource, string> spanFactory = null,
            string span = ParallelSpan)
        {
            spanFactory = spanFactory ?? (value => value.ToString());
            MarkerSeries markerSeries = Markers.CreateMarkerSeries(span);

            return(query(
                       source,
                       value =>
            {
                using (markerSeries.EnterSpan(
                           Thread.CurrentThread.ManagedThreadId, spanFactory(value)))
                {
                    return iteratee(value);
                }
            }));
        }