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;
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);
}
}
}

View File

@@ -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);
}
}
}
}