Example #1
0
        private static void InvokeOnceByNewClient(object o)
        {
            Console.WriteLine("ThreadID: {0}", Thread.CurrentThread.ManagedThreadId.ToString());
            var waitHandle = o as CountdownEvent;

            var stopwatch = TimeElapsedTracer.CreateWatchAndStartTracing();

            ProductServiceProxy productService = new ProductServiceProxy("ProductServiceHttp");

            var elapsed = TimeElapsedTracer.TraceRestart("创建Proxy", stopwatch, TimeSpan.Zero);

            productService.Open();

            Console.WriteLine("Start tid {0}", Thread.CurrentThread.ManagedThreadId.ToString());
            var product = productService.GetProduct("XXXX");

            Console.WriteLine("END tid {0}", Thread.CurrentThread.ManagedThreadId.ToString());

            elapsed = TimeElapsedTracer.TraceRestart("调用proxy", stopwatch, elapsed);

            (productService as IDisposable).Dispose();
            TimeElapsedTracer.TraceStop("dispose proxy", stopwatch, elapsed);


            TimeElapsedTracer.TraceStopAndReset("全部", stopwatch);


            waitHandle.SetOne();
        }
Example #2
0
        private static void InvokeOnceByCachedFactory(object o)
        {
            Console.WriteLine("ThreadID: {0}", Thread.CurrentThread.ManagedThreadId.ToString());
            var waitHandle = o as CountdownEvent;

            var stopwatch = TimeElapsedTracer.CreateWatchAndStartTracing();

            var proxy   = factory.CreateChannel();
            var elapsed = TimeElapsedTracer.TraceRestart("创建Proxy", stopwatch, TimeSpan.Zero);

            (proxy as IClientChannel).Open();
            var product = proxy.GetProduct("xxxx");

            elapsed = TimeElapsedTracer.TraceRestart("调用proxy", stopwatch, elapsed);
            Console.WriteLine(elapsed.ToString());
            (proxy as IClientChannel).Close();
            TimeElapsedTracer.TraceStop("dispose proxy", stopwatch, elapsed);

            TimeElapsedTracer.TraceStopAndReset("全部", stopwatch);

            waitHandle.SetOne();
        }
Example #3
0
        static void Main(string[] args)
        {
            CountdownEvent waitHandle = new CountdownEvent(threadCount);

            ThreadPool.SetMaxThreads(400, 800);
            ThreadPool.SetMinThreads(40, 80);

            TimeElapsedTracer.Initial(threadCount);

            Enumerable.Range(0, threadCount).All(a =>
            {
                //InvokeOnceByNewClient(waitHandle);
                //Thread t = new Thread(InvokeOnceByNewClient);
                //t.Start(waitHandle);

                ThreadPool.QueueUserWorkItem(InvokeOnceByNewClient, waitHandle);
                //ThreadPool.QueueUserWorkItem(InvokeOnceByCachedFactory, waitHandle);
                return(true);
            });

            waitHandle.WaitAll();
            waitHandle.Dispose();
            Console.WriteLine("==comlete tracing==");

            //var logger = new DBTraceResultLogger("Data Source=.;Initial Catalog=Test;Integrated Security=true", "test3000factoryhttp");
            //logger.Log(TimeElapsedTracer.TraceResult);

            //ConsoleTraceResultLogger logger = new ConsoleTraceResultLogger();
            //logger.Log(TimeElapsedTracer.TraceResult);

            Console.WriteLine("==comlete logging==");

            TimeElapsedTracer.ClearTraceResult();

            Console.WriteLine("=========comlete==============");
            Console.ReadKey();
        }