diff --git a/OpenRA.Game/Network/OrderManager.cs b/OpenRA.Game/Network/OrderManager.cs index fb6783fe77..8ed98d139c 100755 --- a/OpenRA.Game/Network/OrderManager.cs +++ b/OpenRA.Game/Network/OrderManager.cs @@ -198,16 +198,21 @@ namespace OpenRA.Network } bool disposed; - public void Dispose() + protected void Dispose(bool disposing) { - if (disposed) return; + if (disposed) + return; - Connection.Dispose(); + if (disposing) + Connection.Dispose(); disposed = true; - GC.SuppressFinalize(this); } - ~OrderManager() { Dispose(); } + public void Dispose() + { + Dispose(true); + GC.SuppressFinalize(this); + } } } diff --git a/OpenRA.Game/Network/ReplayRecorderConnection.cs b/OpenRA.Game/Network/ReplayRecorderConnection.cs index d5eaf19c70..6724fd82d6 100644 --- a/OpenRA.Game/Network/ReplayRecorderConnection.cs +++ b/OpenRA.Game/Network/ReplayRecorderConnection.cs @@ -17,7 +17,7 @@ using OpenRA.Widgets; namespace OpenRA.Network { - class ReplayRecorderConnection : IConnection + class ReplayRecorderConnection : IConnection, IDisposable { public ReplayMetadata Metadata; @@ -98,27 +98,30 @@ namespace OpenRA.Network } bool disposed; - - public void Dispose() + protected void Dispose(bool disposing) { if (disposed) return; - if (Metadata != null) + if (disposing) { - if (Metadata.GameInfo != null) - Metadata.GameInfo.EndTimeUtc = DateTime.UtcNow; - Metadata.Write(writer); + if (Metadata != null) + { + if (Metadata.GameInfo != null) + Metadata.GameInfo.EndTimeUtc = DateTime.UtcNow; + Metadata.Write(writer); + } + writer.Close(); + inner.Dispose(); } - writer.Close(); - inner.Dispose(); disposed = true; } - ~ReplayRecorderConnection() + public void Dispose() { - Dispose(); + Dispose(true); + GC.SuppressFinalize(this); } } -} \ No newline at end of file +}