我从Sebastien Lorion 编写的这个链接中找到了一个写得很好的 CSV 解析器/阅读器。
我喜欢这个 CSV 解析器的地方在于,我可以轻松地将它绑定到 DataGrid,例如:
using (CachedCsvReader csv = new
CachedCsvReader(new StreamReader(txtChosenFile.Text), true))
{
dataGridView1.DataSource = csv;
}
这是我在项目中需要的,因为我希望我的用户在将其提交到数据库之前对其进行预览。
但是,由于加载文件需要一段时间,我需要使用进度条至少向我的用户提供反馈。不幸的是,获得课程只是一个班轮,CachedCsvReader
这使我很难在读取 csv 文件时链接或更新进度条。
如果它只是一个简单的CsvReader
类,那么更新我的进度条很容易,例如:
using (StreamReader sr = new StreamReader(openFileDialog1.FileName))
{
using (CsvReader csv = new
CsvReader(sr, true))
{
double progress = (double) sr.BaseStream.Position / (double) sr.BaseStream.Length;
progressBar1.Value = (int)progress*100;
}
}
但是,由于我使用的是 aCachedCsvReader
并且只有一个(或两个)班轮来上传 csv 阅读器而没有关于流位置和长度的信息,所以我无法更新我的进度条。
那么,将进度条连接到 CachedCsvReader 的最佳方式是什么?