コード例 #1
0
        private void Start(DiagnoserActionParameters parameters)
        {
            var counters = benchmarkToCounters[parameters.BenchmarkCase] = parameters.Config
                                                                           .GetHardwareCounters()
                                                                           .Select(counter => HardwareCounters.FromCounter(counter, config.IntervalSelectors.TryGetValue(counter, out var selector) ? selector : GetInterval))
                                                                           .ToArray();

            if (counters.Any()) // we need to enable the counters before starting the kernel session
            {
                HardwareCounters.Enable(counters);
            }

            try
            {
                kernelSession = new KernelSession(parameters, config, CreationTime).EnableProviders();
                if (config.CreateHeapSession)
                {
                    heapSession = new HeapSession(parameters, config, CreationTime).EnableProviders();
                }
                userSession = new UserSession(parameters, config, CreationTime).EnableProviders();
            }
            catch (Exception)
            {
                userSession?.Dispose();
                heapSession?.Dispose();
                kernelSession?.Dispose();

                throw;
            }
        }
コード例 #2
0
        private void Stop(DiagnoserActionParameters parameters)
        {
            WaitForDelayedEvents();

            try
            {
                kernelSession.Stop();
                userSession.Stop();

                benchmarkToEtlFile[parameters.BenchmarkCase] = userSession.MergeFiles(kernelSession);
            }
            finally
            {
                kernelSession.Dispose();
                userSession.Dispose();
            }
        }
コード例 #3
0
 private void OnConsoleCancelKeyPress(object sender, ConsoleCancelEventArgs e) => Session?.Dispose();
コード例 #4
0
 private void OnProcessExit(object sender, EventArgs e) => Session?.Dispose();
コード例 #5
0
        protected void Stop()
        {
            WaitForDelayedEvents();

            Session.Dispose();
        }