I am using a memorystream object to write values from streamwriter object into memory. I have several methods which are for logging errors and values so I pass my memorystream object between them as a parameter. My problem is the memorystream doesn't contain values. See code below:\[code\] #region csvlogging public static void initiateCsvLogging(SortedList<int, string> logList, SortedList<int, string> errorList) // Handles csv upload logging { logMsgError(errorList, logList); } public static void logMsgError(SortedList<int, string> errorList, SortedList<int, string> logList) { using (MemoryStream ms = new MemoryStream()) { StreamWriter sw = new StreamWriter(ms); try { sw.WriteLine("Errors:"); foreach (KeyValuePair<int, string> k in errorList) { if (k.Value =http://stackoverflow.com/questions/12689441/= null) { sw.WriteLine("No errors reported."); } else { sw.WriteLine(k.Key + "," + k.Value); } } } catch (Exception ex) { } finally { sw.WriteLine(""); } logMsg(logList, ms); } } // Handles data upload error logging for csv public static MemoryStream logMsg(SortedList<int, string> logList, MemoryStream ms) { string DateNow = System.DateTime.Now.Date.ToString("yyyy-MM-dd"); string FileName = "log " + DateNow + ".csv"; char[] delimiterChars = { ',' }; try { // Write values to textfile and save to Log folder using (StreamWriter sw = new StreamWriter(ms)) { if (logList.Keys.Count == 0) { sw.WriteLine("No new users added to Active Directory."); } else // If keys > 0 then new users have been added to AD { sw.WriteLine("Username" + "," + "Password" + "," + "Company" + "," + "Email"); foreach (KeyValuePair<int, string> k in logList) { string[] values = k.Value.Split(delimiterChars); sw.WriteLine(values[0] + "," + values[1] + "," + values[2] + "," + values[3]); } } try { sw.Flush(); sendLogByEmail(new MemoryStream(ms.ToArray()), FileName); } catch (Exception ex) { } } } catch (ThreadAbortException ex) { } finally { } return ms; } // Handles logging for csv public static void sendLogByEmail(MemoryStream ms, string error, int count) { //Send mail by attachment code SmtpClient smtpclient = new SmtpClient(); //smtpclient.DeliveryMethod = SmtpDeliveryMethod.PickupDirectoryFromIis; //smtpclient.UseDefaultCredentials = true; smtpclient.Host = "ldnmail"; MailMessage message = new MailMessage("[email protected]", "[email protected]"); System.Net.Mime.ContentType ct = new System.Net.Mime.ContentType(System.Net.Mime.MediaTypeNames.Text.Plain); System.Net.Mail.Attachment attach = new System.Net.Mail.Attachment(ms, ct); attach.ContentDisposition.FileName = error; message.Attachments.Add(attach); smtpclient.Send(message); } #endregion\[/code\]Because I am not using the USING keyword do I have to write some more code for the memorystream object?