public void Start()
        {
            Stop();

            broadcastReceiver = new GlobalUdpBroadcaster(45678, true);
            broadcastReceiver.PacketReceived += BroadcastReceiver_PacketReceived;

            triggerBroadcastsThread = new Thread(() =>
            {
                try
                {
                    while (true)
                    {
                        Thread.Sleep(1333);
                        if (Enabled)
                        {
                            broadcastReceiver.Broadcast(ByteUtil.Utf8NoBOM.GetBytes("SpeedTestServer Broadcast Request"));
                        }
                    }
                }
                catch (ThreadAbortException) { }
                catch (Exception ex)
                {
                    Logger.Debug(ex);
                }
            });
            triggerBroadcastsThread.Name         = "Autodetector Timer Thread";
            triggerBroadcastsThread.IsBackground = true;
            triggerBroadcastsThread.Start();
        }
 private void NetworkAddressesChanged()
 {
     lock (autodetectBroadcasterLock)
     {
         autodetectBroadcaster = new GlobalUdpBroadcaster(45678, true);
         autodetectBroadcaster.PacketReceived += AutodetectBroadcaster_PacketReceived;
     }
 }
        public void Stop()
        {
            broadcastReceiver?.Stop();
            broadcastReceiver = null;

            triggerBroadcastsThread?.Abort();
            triggerBroadcastsThread = null;
        }