来自csv导入方法的'Do not dispose objects multiple times'警告



我通读了很多关于 SO 的帖子,仍然需要一些帮助来理解这一点。

CodeAnalysis 说这种方法会释放对象两次。实际上,它警告我该方法中的两个对象;一次用于file.InputStream,一次用于reader对象

这是我的代码:

public void SaveCsvData(HttpPostedFileBase file, int vendorId)
        {
            var listCsvImport = new List<CsvImport>();
            try
            {
                using (var reader = new StreamReader(file.InputStream))
                using (var csvReader = new CsvHelper.CsvReader(reader))
                {
                    int count = 0;
                    while (csvReader.Read())
                    {
                        ...<snip>...
                        listCsvImport.Add(record);
                    }
                    _db.CsvImports.AddRange(listCsvImport);
                    _db.SaveChanges();
                }
...<snip>...
            }
            catch (CsvBadDataException ex)
            {
                log.Error("Invalid data in the CSV file, terminating process...");
                throw;
            }
            catch (Exception ex)
            {
                log.Error("Csv import failed, no data was saved.", ex);
                throw;
            }
        }

谢谢

using (var csvReader = new CsvHelper.CsvReader(reader))已经释放了读取器对象,因此您不需要使用 using (var reader = new StreamReader(file.InputStream))

相关内容

最新更新