C#在后台填充列表



我有一个日志文件,其中包含大量条目(100000个或更多(。我用Streamreader读取每一行,并将其保存在列表中。列表视图获取并显示列表。

我的问题是,读取整个文件并将其存储在列表中需要很长时间。

在应用程序运行时,是否有可能在后台逐渐填写列表?或者还有其他读取和加载大文件的方法吗?

您可以尝试使用线程来完成此操作。这里有一个解释:

https://www.tutorialspoint.com/csharp/csharp_multithreading.htm

https://learn.microsoft.com/en-us/dotnet/standard/threading/using-threads-and-threading

在.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);
}
}
}

最新更新