【发布时间】:2013-05-27 06:15:37
【问题描述】:
我从 Sebastien Lorion 编写的 link 中找到了一个编写良好的 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;
}
}
但是,由于我使用的是CachedCsvReader,并且只有一个(或两个)班轮来上传 csv 阅读器而没有关于流位置和长度的信息,所以我无法更新我的进度条。
那么,将进度条连接到 CachedCsvReader 的最佳方式是什么?
【问题讨论】:
标签: c# csv progress-bar streamreader