来自csv导入方法的“不要多次释放对象”警告

本文关键字:释放 对象 警告 导入 csv 方法 来自 | 更新日期: 2023-09-27 18:25:15

我通读了很多关于 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;
            }
        }

谢谢

来自csv导入方法的“不要多次释放对象”警告

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