Mostly a question on which approach would be better *and* when utilizing the `using` keyword, would it still be neccesary to close streams programatically. If an object implements `IDisposable` should `using` always be used? Link to my full answer using this sample: [Stackoverflow Answer][1] Option 1: WebClient webClient; webClient = new WebClient(); string json = webClient.DownloadString(@"urlToTheJsonResponse"); MemoryStream stream = new MemoryStream((Encoding.UTF8.GetBytes(json))); DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(GISData)); stream.Position = 0; GISData data = (GISData)ser.ReadObject(stream); stream.Close(); Option 2: WebClient webClient; MemoryStream stream; string json; GISData data; using (webClient = new WebClient()) { json = webClient.DownloadString(@"urlToTheJsonResponse"); } using (stream = new MemoryStream((Encoding.UTF8.GetBytes(json)))) { DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(GISData)); data = (GISData)ser.ReadObject(stream); stream.Close(); } using (webClient = new WebClient()) { webClient.DownloadFile(data.href, "C:/" + data.href.Substring(data.href.LastIndexOf("/") + 1)); } [1]: http://stackoverflow.com/questions/9563302/calling-and-get-result-text-from-service/9564067#9564067