コード例 #1
0
        private static void Main(string[] args)
        {
            // var sw = Stopwatch.StartNew();
            // Thread.Sleep(TimeSpan.FromTicks(1));
            // var ticks = sw.ElapsedTicks;
            // var microseconds = ticks / (Stopwatch.Frequency / (1000d * 1000d));
            // var nanoseconds = ticks / (Stopwatch.Frequency / (1000d * 1000d * 1000d));

            // Console.WriteLine("Frequency: {0} ticks/s", Stopwatch.Frequency);
            // Console.WriteLine("Frequency: {0} ticks/ms", Stopwatch.Frequency / 1000d);
            // Console.WriteLine("Frequency: {0} ticks/us", Stopwatch.Frequency / 1000d / 1000d);
            // Console.WriteLine("Frequency: {0} ticks/ns", Stopwatch.Frequency / 1000d / 1000d / 1000d);
            // Console.WriteLine("Microseconds: {0}", microseconds);
            // Console.WriteLine("Nanoseconds: {0}", nanoseconds);
            // Console.WriteLine("Ticks: {0}", ticks);


            var clock = new Clock(0, 100);
            var lamp  = new LEDNode(1);
            var wire  = new Wire(2);

            var not   = new NOTNode(3);
            var wire2 = new Wire(4);

            wire.NodeToOutputTo         = not;
            wire.InputAtNodeConnectedTo = 0;
            clock.OutputWiresConnected[0].Add(wire);
            wire2.NodeToOutputTo         = lamp;
            wire2.InputAtNodeConnectedTo = 0;
            not.OutputWiresConnected[0].Add(wire2);
            Simulator.Nodes.Add(clock);
            Simulator.Nodes.Add(lamp);
            Simulator.Nodes.Add(not);
            Simulator.Nodes.Add(wire);
            Simulator.Nodes.Add(wire2);
            Simulator.CollectClocks();

            Sampler.Configure(100, false);

            var cancellationTokenSource = new CancellationTokenSource();
            var task = Task.Factory.StartNew(() => Simulator.Simulate(cancellationTokenSource.Token),
                                             TaskCreationOptions.LongRunning);

            Thread.Sleep(1000);

            cancellationTokenSource.Cancel();
            task.Wait(1000);

            Console.WriteLine("Stop {0}", Sampler.Samples.Count);
            Console.WriteLine();
            WavePrinter.PrintWave(Sampler.Samples);
        }