From c25b87e4ebfbee8720a0efc6b36470e3bd1685e8 Mon Sep 17 00:00:00 2001 From: Markus Stoll Date: Tue, 13 Oct 2015 17:02:22 +0200 Subject: [PATCH] fix dispose bug --- SparkleLib/SparkleListenerBase.cs | 15 ++++++++++----- SparkleLib/SparkleRepoBase.cs | 8 ++++++-- 2 files changed, 16 insertions(+), 7 deletions(-) diff --git a/SparkleLib/SparkleListenerBase.cs b/SparkleLib/SparkleListenerBase.cs index 9f3c44ba..152b6254 100755 --- a/SparkleLib/SparkleListenerBase.cs +++ b/SparkleLib/SparkleListenerBase.cs @@ -71,14 +71,15 @@ namespace SparkleLib { Server = server; this.channels.Add (folder_identifier); - this.reconnect_timer.Elapsed += delegate { - if (!IsConnected && !IsConnecting) - Reconnect (); - }; - + this.reconnect_timer.Elapsed += OnTimerElapsed; this.reconnect_timer.Start (); } + private void OnTimerElapsed(object sender, EventArgs args) + { + if (!IsConnected && !IsConnecting) + Reconnect (); + } public void Announce (SparkleAnnouncement announcement) { @@ -166,7 +167,11 @@ namespace SparkleLib { { if (this.reconnect_timer != null) { this.reconnect_timer.Stop (); + + this.reconnect_timer.Elapsed -= OnTimerElapsed; this.reconnect_timer.Dispose (); + + this.reconnect_timer = null; } } diff --git a/SparkleLib/SparkleRepoBase.cs b/SparkleLib/SparkleRepoBase.cs index 5a82d3ba..33f90dd1 100755 --- a/SparkleLib/SparkleRepoBase.cs +++ b/SparkleLib/SparkleRepoBase.cs @@ -613,8 +613,12 @@ namespace SparkleLib { public void Dispose () { - this.remote_timer.Stop (); - this.remote_timer.Dispose (); + if (remote_timer != null) { + this.remote_timer.Elapsed -= RemoteTimerElapsedDelegate; + this.remote_timer.Stop (); + this.remote_timer.Dispose (); + this.remote_timer = null; + } this.listener.Disconnected -= ListenerDisconnectedDelegate; this.listener.AnnouncementReceived -= ListenerAnnouncementReceivedDelegate;