簡體   English   中英

C#后台填充列表

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM