我在搜索c#中的虛擬列表視圖時遇到問題。C#listview搜索虛擬模式
我現在正在做的是讀一個大的日誌文件。這裏是我到目前爲止所實現的內容
我一次讀取一行文件,並記下行的開始位置。將這些位置添加到列表中,並在調用RetrieveVirtualItem時 - 使用項目和列表的索引在文件中查找位置,然後從文件中讀取行。
因此讀取文件時沒有滯後。
我想現在搜索項目。這是我迄今爲止想到的,但是我沒能成功地實現它。
我實際上並不是在搜索listview,但在我的文件讀取期間,我標記了特定字符串的命中位置,稱爲「INFO」。如果它命中,我將該位置添加到列表中。
當RetrieveVirtualItem被調用時,我只是用所有命中符讀取行。
似乎通過調試 - if (line.IndexOf("INFO", StringComparison.OrdinalIgnoreCase) >= 0)
沒有擊中任何匹配。我不確定爲什麼,有人幫忙?
using (var sr = new myStreamReader("test.log"))
{
while ((line = sr.ReadLine()) != null)
{
if (line.IndexOf("INFO", StringComparison.OrdinalIgnoreCase) >= 0)
{
position = sr.BytesRead;
Search.Add(position);
searchcount++;
}
}
newMessageView.VirtualListSize = searchcount;
}
謝謝,我試過了。大約需要10s-15s來搜索文件,我想這是可以接受的。我想不出另一種方式來加速它比現在更多 – Teddy