view Implab.Playground/Program.cs @ 255:b00441e04738 v3

Adde workaround to the behaviour of the logical operations stack in conjuction with async/await methods
author cin
date Wed, 04 Apr 2018 15:38:48 +0300
parents 302ca905c19e
children 547a2fc0d93e
line wrap: on
line source

using Implab.Diagnostics;
using Implab.Formats.Json;
using Implab.Parallels;
using Implab.Xml;
using System;
using System.Collections.Concurrent;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Xml;
using System.Xml.Serialization;

namespace Implab.Playground {
    using System.Diagnostics;
    using System.Runtime.Remoting.Messaging;
    using static Trace<Program>;

    public class Program {

        static void Main(string[] args) {
            var listener = new SimpleTraceListener(Console.Out);

            var source = Trace<Program>.TraceSource;
            source.Switch.Level = SourceLevels.All;

            source.Listeners.Add(listener);

            var t = Environment.TickCount;

            Main().Wait();

            Console.WriteLine($"Done: {Environment.TickCount - t} ms");
            Console.ReadKey();
        }

        static async Task Main() {
            using (LogicalOperation(nameof(Main))) {
                Log("Start");
                await SomeAsync();
                Log("End");
            }
        }

        static async Task SomeAsync() {
            using (LogicalOperation(nameof(SomeAsync))) {
                Log("Do prepare");
                await Task.Yield();
                Log("Yield");
            }
        }
    }
}