[英]C# filling list in the background
我有一個包含大量條目(100.000 及更多)的日志文件。 我使用 Streamreader 閱讀每一行並將其保存在列表中。 列表視圖獲取列表並顯示它。
我的問題是讀取整個文件並將其存儲在列表中需要很長時間。
是否有可能在應用程序運行時在后台逐漸填充列表? 或者有另一種讀取和加載大文件的方法嗎?
在.net中使用后台工作者,它也有助於顯示運行百分比,例如:
public partial class Form1 : Form
{
private BackgroundWorker _myWorker;
public Form1()
{
InitializeComponent();
_myWorker = new BackgroundWorker();
_myWorker.DoWork += _myWorker_DoWork;
_myWorker.RunWorkerCompleted += _myWorker_RunWorkerCompleted;
_myWorker.ProgressChanged += _myWorker_ProgressChanged;
}
private void _myWorker_ProgressChanged(object sender, ProgressChangedEventArgs e)
{
//Here you can calculate procetage of reading linses from your file
}
private void _myWorker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
//Reading from file finished:
}
private void _myWorker_DoWork(object sender, DoWorkEventArgs e)
{
var counter = 0;
var file =new System.IO.StreamReader("<file path>");
string line;
while ((line = file.ReadLine()) != null)
{
//Adding "line" value to listView etc.
counter++;
var percentage = yourCalculationMethos();
_myWorker.ReportProgress(percentage);
}
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.