comparison MonoPlay/Program.cs @ 201:d7cd7a83189a v2

TraceLog tests
author cin
date Mon, 17 Oct 2016 00:36:36 +0300
parents d45bdf510514
children
comparison
equal deleted inserted replaced
200:71e543dbe65a 201:d7cd7a83189a
1 using System; 1 using Implab;
2 using Implab;
3 using System.Threading.Tasks;
4 using Implab.Formats.JSON;
5 using System.IO;
6 using System.Text.Json;
7 using System.Diagnostics;
8 using Implab.Parallels; 2 using Implab.Parallels;
3 using Implab.Diagnostics;
9 using System.Threading; 4 using System.Threading;
10 5
11 namespace MonoPlay { 6 namespace MonoPlay {
12 class MainClass { 7 class MainClass {
13 8
14 9
15 public static void Main(string[] args) { 10 public static void Main(string[] args) {
16 var pool = new WorkerPool(10); 11 var pool = new WorkerPool(10);
17 12
18 var listerner = new ConsoleTraceListener(); 13 var listerner = new ConsoleTraceListener();
19 listerner.TraceOutputOptions = TraceOptions.LogicalOperationStack; 14 listerner.Subscribe<TraceEvent>();
20 Trace.Listeners.Add(listerner);
21 15
22 Trace.CorrelationManager.StartLogicalOperation("Main"); 16 TraceLog.StartLogicalOperation("Main");
17
23 18
24 var d = pool.Invoke(() => { 19 var d = pool.Invoke(() => {
25 Trace.CorrelationManager.StartLogicalOperation("Worker"); 20 TraceLog.StartLogicalOperation("Worker");
26 Thread.Sleep(100); 21 Thread.Sleep(100);
27 Trace.TraceInformation("worker done"); 22 TraceLog.TraceInformation("worker done");
28 Trace.CorrelationManager.StopLogicalOperation(); 23 TraceLog.EndLogicalOperation();
29 }); 24 });
30 25
26 var op = TraceContext.Instance.CurrentOperation;
31 ThreadPool.QueueUserWorkItem((o) => { 27 ThreadPool.QueueUserWorkItem((o) => {
32 Trace.CorrelationManager.StartLogicalOperation("Thread"); 28 TraceContext.Instance.EnterLogicalOperation(op, false);
29 TraceLog.StartLogicalOperation("Thread");
33 Thread.Sleep(100); 30 Thread.Sleep(100);
34 Trace.TraceInformation("thread done"); 31 TraceLog.TraceInformation("thread done");
35 Trace.CorrelationManager.StopLogicalOperation(); 32 TraceLog.EndLogicalOperation();
36 }); 33 });
37 34
38 Trace.TraceInformation("main done"); 35 TraceLog.TraceInformation("main done");
39 Trace.CorrelationManager.StopLogicalOperation(); 36 TraceLog.EndLogicalOperation();
40 37
41 d.Join(); 38 d.Join();
42 39
43 40
44 41