Пример #1
0
 public event DirectionChangedHandler?DirectionChanged;  // 声明事件
 protected virtual void OnDirectionChanged(DirectionChangedEventArgs e)
 {
     lock (privateLock)
     {
         if (DirectionChanged != null)
         {
             DirectionChanged(this, e); // 调用所有注册对象的方法
         }
     }
 }
Пример #2
0
        private void _directionService_OnDirectionChanged(DirectionChangedEventArgs e)
        {
            if (_directLastUpdated.HasValue && (DateTime.Now - _directLastUpdated.Value).Milliseconds <= 300)
            {
                return;
            }
            Direction = e.LastHeading;

            _directLastUpdated = DateTime.Now;
            Task.Run(() => _scavengerService.ChangeDirection(_scavengerId, Direction));

            var degrees = (Direction < 0 ? Direction + 2 * Math.PI : Direction) * 180 / Math.PI;

            CompassString = $"{degrees:N2}°";
            BearingString = degrees <= 90 ? $"N{degrees:N}°E" :
                            degrees <= 180 ? $"S{180 - degrees:N}°E" :
                            degrees <= 270 ? $"S{degrees - 180:N}°W" :
                            $"N{360 - degrees:N}°W";
        }