Skip to content

Commit d525960

Browse files
Merge pull request #223 from rabbitmq/rabbitmq-dotnet-client-220
null timers after disposing them to avoid duplicate calls to Dispose
2 parents 7556666 + c6f8491 commit d525960

File tree

1 file changed

+11
-6
lines changed

1 file changed

+11
-6
lines changed

projects/client/RabbitMQ.Client/src/client/impl/Connection.cs

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1061,8 +1061,10 @@ public void HeartbeatReadTimerCallback(object state)
10611061
{
10621062
_heartbeatReadTimer.Change(Heartbeat * 1000, Timeout.Infinite);
10631063
}
1064-
} catch (ObjectDisposedException ignored)
1064+
}
1065+
catch (ObjectDisposedException ignored)
10651066
{
1067+
10661068
// timer is already disposed,
10671069
// e.g. due to shutdown
10681070
}
@@ -1096,7 +1098,8 @@ public void HeartbeatWriteTimerCallback(object state)
10961098
TerminateMainloop();
10971099
FinishClose();
10981100
}
1099-
} catch (ObjectDisposedException ignored)
1101+
}
1102+
catch (ObjectDisposedException ignored)
11001103
{
11011104
// timer is already disposed,
11021105
// e.g. due to shutdown
@@ -1105,19 +1108,21 @@ public void HeartbeatWriteTimerCallback(object state)
11051108

11061109
protected void MaybeStopHeartbeatTimers()
11071110
{
1108-
MaybeDisposeTimer(_heartbeatReadTimer);
1109-
MaybeDisposeTimer(_heartbeatWriteTimer);
1111+
MaybeDisposeTimer(ref _heartbeatReadTimer);
1112+
MaybeDisposeTimer(ref _heartbeatWriteTimer);
11101113
}
11111114

1112-
private void MaybeDisposeTimer(Timer timer)
1115+
private void MaybeDisposeTimer(ref Timer timer)
11131116
{
11141117
if (timer != null)
11151118
{
11161119
try
11171120
{
11181121
timer.Change(Timeout.Infinite, Timeout.Infinite);
11191122
timer.Dispose();
1120-
} catch (ObjectDisposedException ignored)
1123+
timer = null;
1124+
}
1125+
catch (ObjectDisposedException ignored)
11211126
{
11221127
// we are shutting down, ignore
11231128
}

0 commit comments

Comments
 (0)