static void Main(string[] args)
        {
            var telemetryClient = new TelemetryClient();

            //API one:

            //telemetryClient.RegisterAggregateMetric("MetricsGenerator", "City", percentileCalculation: PercentileCalculation.OrderByLargest);

            //for (double i = -50; i < 10000000; i += new Random().NextDouble())
            //{
            //    telemetryClient.TrackAggregateMetric("MetricsGenerator", i, "Seattle");
            //    telemetryClient.TrackAggregateMetric("MetricsGenerator", i, "New York");
            //}

            //API two:

            Random rand = new Random();
            telemetryClient.Gauge("active processes", () => { return rand.Next(10, 15); });

            var counter = telemetryClient.Counter("# of items");

            var meter = telemetryClient.Meter("rate of items");
            var aMeter = telemetryClient.Meter("rate of char a");

            while (true)
            {
                var queue = new ConcurrentQueue<char>();
                var a = Console.ReadKey().KeyChar;
                queue.Enqueue(a);
                counter.Increment();
                meter.Mark();
                if (a == 'a')
                {
                    aMeter.Mark();
                }
                else
                {
                    aMeter.Mark(0);
                }

                new Task(() =>
                {
                    Thread.Sleep(100);
                    char ch;
                    if (queue.TryDequeue(out ch))
                    {
                        counter.Decrement();
                        Console.Write(ch);
                    }
                }).Start();
            }
        }
        public void SimpleMeterUsageExample()
        {
            TelemetryConfiguration configuraiton = new TelemetryConfiguration();

            TelemetryClient client = new TelemetryClient(configuraiton);
            client.Context.Properties["a"] = "b";

            var simpleMeter = client.Meter("test");
            var counters = configuraiton.GetCounters();

            Assert.AreEqual(1, counters.Count);

            for (int i = 0; i < 10; i++)
            {
                simpleMeter.Mark(2);
            }

            Thread.Sleep(TimeSpan.FromSeconds(1));

            MetricTelemetry metric = counters[0].GetValueAndReset();
            Assert.IsTrue(2 - metric.Value < 1);
            Assert.AreEqual(null, metric.Count);
            Assert.AreEqual("test", metric.Name);
            Assert.AreEqual("b", metric.Context.Properties["a"]);
        }