Merge pull request #5359 from cvium/fix_broadcasttimer_disposed

Do nothing in timer callback when device locator is disposed
This commit is contained in:
Bond-009 2021-03-03 15:27:46 +01:00 committed by GitHub
commit 72d063c563
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -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)
{