Возможно, это не на 100% правда, что это приемлемо ...
Если вы случайно вкладываете и возвращаетесь из вложенного, это может быть небезопасно.
Взять это в качестве примера:
using (var memoryStream = new MemoryStream())
{
using (var textwriter = new StreamWriter(memoryStream))
{
using (var csv = new CsvWriter(textwriter))
{
//..write some stuff to the stream using the CsvWriter
return memoryStream.ToArray();
}
}
}
Я передавал DataTable для вывода в виде csv. С возвратом в середине он записывал все строки в поток, но в выводимом csv всегда отсутствовала строка (или несколько, в зависимости от размера буфера). Это сказало мне, что что-то не было закрыто должным образом.
Правильный способ - убедиться, что все предыдущие использования расположены правильно:
using (var memoryStream = new MemoryStream())
{
using (var textwriter = new StreamWriter(memoryStream))
{
using (var csv = new CsvWriter(textwriter))
{
//..write some stuff to the stream using the CsvWriter
}
}
return memoryStream.ToArray();
}