Merge pull request #5415 from pavlos256/replayrecorder-disposing-crash

Fix #5414
This commit is contained in:
Paul Chote
2014-05-24 20:55:38 +12:00
2 changed files with 25 additions and 17 deletions

View File

@@ -198,16 +198,21 @@ namespace OpenRA.Network
} }
bool disposed; bool disposed;
public void Dispose() protected void Dispose(bool disposing)
{ {
if (disposed) return; if (disposed)
return;
if (disposing)
Connection.Dispose(); Connection.Dispose();
disposed = true; disposed = true;
GC.SuppressFinalize(this);
} }
~OrderManager() { Dispose(); } public void Dispose()
{
Dispose(true);
GC.SuppressFinalize(this);
}
} }
} }

View File

@@ -17,7 +17,7 @@ using OpenRA.Widgets;
namespace OpenRA.Network namespace OpenRA.Network
{ {
class ReplayRecorderConnection : IConnection class ReplayRecorderConnection : IConnection, IDisposable
{ {
public ReplayMetadata Metadata; public ReplayMetadata Metadata;
@@ -98,27 +98,30 @@ namespace OpenRA.Network
} }
bool disposed; bool disposed;
protected void Dispose(bool disposing)
public void Dispose()
{ {
if (disposed) if (disposed)
return; return;
if (disposing)
{
if (Metadata != null) if (Metadata != null)
{ {
if (Metadata.GameInfo != null) if (Metadata.GameInfo != null)
Metadata.GameInfo.EndTimeUtc = DateTime.UtcNow; Metadata.GameInfo.EndTimeUtc = DateTime.UtcNow;
Metadata.Write(writer); Metadata.Write(writer);
} }
writer.Close(); writer.Close();
inner.Dispose(); inner.Dispose();
}
disposed = true; disposed = true;
} }
~ReplayRecorderConnection() public void Dispose()
{ {
Dispose(); Dispose(true);
GC.SuppressFinalize(this);
} }
} }
} }