示例#1
0
        public async void Start()
        {
            _state = PhysicalLayerSimulatorState.Running;
            _cancelSource.Token.Register(() =>
            {
                _state = PhysicalLayerSimulatorState.Stopped;
                _physicalLayer.Dispose();
            });
            var task = new Task(() =>
            {
                while (_state == PhysicalLayerSimulatorState.Running)
                {
                    var sTime = DateTime.Now;
                    _physicalLayer.Step();
                    var ellapsed = DateTime.Now.Subtract(sTime).TotalMilliseconds;
                    if (ellapsed < _stepPeriod)
                    {
                        Thread.Sleep((int)(_stepPeriod - ellapsed));
                    }
                }
            }
                                , _cancelSource.Token
                                );

            task.Start();
            await task;
        }
示例#2
0
 public PhysicalLayerSimulator()
 {
     _physicalLayer = new global::PhysicalLayer.PhysicalLayer();
     _state         = PhysicalLayerSimulatorState.Stopped;
 }