Improved MemoryStream handling in TileImageLoader

This commit is contained in:
ClemensF 2012-07-27 18:47:57 +02:00
parent d368c9358c
commit 940d8bad62

View file

@ -247,14 +247,22 @@ namespace MapControl
} }
using (HttpWebResponse response = (HttpWebResponse)request.GetResponse()) using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
using (Stream responseStream = response.GetResponseStream())
{ {
using (Stream responseStream = response.GetResponseStream()) if (response.ContentLength > 0)
{ {
buffer = new byte[(int)response.ContentLength]; using (MemoryStream memoryStream = new MemoryStream((int)response.ContentLength))
using (MemoryStream memoryStream = new MemoryStream(buffer))
{ {
responseStream.CopyTo(memoryStream); responseStream.CopyTo(memoryStream);
buffer = memoryStream.GetBuffer();
}
}
else
{
using (MemoryStream memoryStream = new MemoryStream())
{
responseStream.CopyTo(memoryStream);
buffer = memoryStream.ToArray();
} }
} }
} }
@ -263,8 +271,6 @@ namespace MapControl
} }
catch (WebException ex) catch (WebException ex)
{ {
buffer = null;
if (ex.Status == WebExceptionStatus.ProtocolError) if (ex.Status == WebExceptionStatus.ProtocolError)
{ {
TraceInformation("{0} - {1}", tile.Uri, ((HttpWebResponse)ex.Response).StatusCode); TraceInformation("{0} - {1}", tile.Uri, ((HttpWebResponse)ex.Response).StatusCode);
@ -280,8 +286,6 @@ namespace MapControl
} }
catch (Exception ex) catch (Exception ex)
{ {
buffer = null;
TraceWarning("{0} - {1}", tile.Uri, ex.Message); TraceWarning("{0} - {1}", tile.Uri, ex.Message);
} }