Browse Source

Merge pull request #5359 from cvium/fix_broadcasttimer_disposed

Do nothing in timer callback when device locator is disposed
Bond-009 4 years ago
parent
commit
72d063c563
1 changed files with 6 additions and 8 deletions
  1. 6 8
      RSSDP/SsdpDeviceLocator.cs

+ 6 - 8
RSSDP/SsdpDeviceLocator.cs

@@ -97,6 +97,11 @@ namespace Rssdp.Infrastructure
 
         private async void OnBroadcastTimerCallback(object state)
         {
+            if (IsDisposed)
+            {
+                return;
+            }
+
             StartListeningForNotifications();
             RemoveExpiredDevicesFromCache();
 
@@ -180,8 +185,6 @@ namespace Rssdp.Infrastructure
         /// <exception cref="ObjectDisposedException">Throw if the <see cref="DisposableManagedObjectBase.IsDisposed"/>  ty is true.</exception>
         public void StartListeningForNotifications()
         {
-            ThrowIfDisposed();
-
             _CommunicationsServer.RequestReceived -= CommsServer_RequestReceived;
             _CommunicationsServer.RequestReceived += CommsServer_RequestReceived;
             _CommunicationsServer.BeginListeningForBroadcasts();
@@ -353,7 +356,7 @@ namespace Rssdp.Infrastructure
             {
                 return;
             }
-            
+
             var location = GetFirstHeaderUriValue("Location", message);
             if (location != null)
             {
@@ -515,11 +518,6 @@ namespace Rssdp.Infrastructure
 
         private void RemoveExpiredDevicesFromCache()
         {
-            if (this.IsDisposed)
-            {
-                return;
-            }
-
             DiscoveredSsdpDevice[] expiredDevices = null;
             lock (_Devices)
             {