/// <summary> /// 开始性能跟踪 /// </summary> /// <param name="profiler"></param> /// <returns></returns> public Trace RunProfiler(IProfiler profiler) { if (profiler.Status == TraceStatus.Started) { return(null); } if (profiler.Status == TraceStatus.Stopped) { profiler.Start(); } Trace existingTrace = _traces[profiler]; if (existingTrace == null) { return(null); } DeleteProfiler(profiler); IProfiler newProfiler = profiler.Copy(); InitializeProfiler(newProfiler); foreach (TraceEventProperties p in existingTrace.TraceEvents) { newProfiler.AddTraceEvent(p.Event, p.Fields); } foreach (FilterProperties f in existingTrace.TraceFilters) { profiler.AddTraceFilter(f.Field, LogicalOperator.AND, f.Operator, f.TypedValue); } newProfiler.TraceEvent += profiler_TraceEvent; newProfiler.Start(); Trace trace = new Trace(newProfiler, existingTrace.DataTable, existingTrace.TraceName); trace.TraceEvents = existingTrace.TraceEvents; _traces.Add(newProfiler, trace); return(trace); }
public Trace RunProfiler(IProfiler profiler) { if(profiler.Status == TraceStatus.Started) return null; if(profiler.Status == TraceStatus.Stopped) profiler.Start(); Trace existingTrace = _traces[profiler]; if(existingTrace == null) return null; DeleteProfiler(profiler); IProfiler newProfiler = profiler.Copy(); InitializeProfiler(newProfiler); foreach (TraceEventProperties p in existingTrace.TraceEvents) { newProfiler.AddTraceEvent(p.Event, p.Fields); } foreach (FilterProperties f in existingTrace.TraceFilters) { profiler.AddTraceFilter(f.Field, LogicalOperator.AND, f.Operator, f.TypedValue); } newProfiler.TraceEvent += profiler_TraceEvent; newProfiler.Start(); Trace trace = new Trace(newProfiler, existingTrace.DataTable, existingTrace.TraceName); trace.TraceEvents = existingTrace.TraceEvents; _traces.Add(newProfiler, trace); return trace; }