string[] lines = File.ReadAllLines("D:/map.txt", Encoding.UTF8); //獲取txt所有內容
for (int i = 0; i < lines.Length; i++) //for回圈txt的長度
{
string[] b = lines[i].Split(' '); //字串分割
listView3.Items.Add(new ListViewItem(new string[] {b[1].ToString(), b[0].ToString() }));
}
目前我是這樣寫的
然后TXT里面有很多
湖南 長沙
廣東 汕頭
湖北 孝感
湖南 長沙
廣東 汕頭
湖北 孝感
湖南 長沙
廣東 汕頭
湖北 孝感
湖南 長沙
廣東 汕頭
湖北 孝感
湖南 長沙
廣東 汕頭
湖北 孝感
但是我發現一個問題就是 當我打開軟體的時候會有延遲卡頓現象 但TXT里面的資料如果只有幾行就一切正常。
請問一下大佬 怎么優化! 還是說 加個時間延遲? 比如說每1秒顯示多少行內容
uj5u.com熱心網友回復:
string[] lines= await File.AppendAllLinesAsync();這是解決你UI卡頓,但不解決你讀入慢。
要解決讀入慢,你只能一批一批stream讀入
uj5u.com熱心網友回復:
我百度了一下,網上還有人說 采取流讀取就不慢了,不知道是否有用!uj5u.com熱心網友回復:
public async IAsyncEnumerable<string> AsyncStreamReadlines(FileInfo fileInfo)
{
using var fs = fileInfo.OpenRead();
using var sr = new StreamReader(fs);
while (true)
{
string line = await sr.ReadLineAsync();
if (line == null)
{
yield break; break;
}
yield return line;
}
}
呼叫
await foreach (var line in AsyncStreamReadlines(new FileInfo(@"F:\debug.log")))
{
Trace.WriteLine(line);
await Task.Delay(100); //這里我稍微休眠一下,免得高速的UI重繪造成主行程忙碌
}
uj5u.com熱心網友回復:
不是慢還是不慢的問題,比如我這個debug.log有1G,如果整體一次性讀入記憶體自然有得搞。
換成stream一行一行讀,你可以邊讀邊決議顯示
至于我用了新的IAsyncEnumerable<string>,只是告訴你們微軟已經有了異步迭代器,別說博客園的整天就記著折騰string+string,博客園不告訴你們,你們就喊著“net要完,net是49的國軍”------我們只是說要說國軍,也只能說是博客園那波折騰string的,是跟著博客園學著啥都不記得,只記得string的
uj5u.com熱心網友回復:
用檔案流,讀一行處理一行(●°u°●)? 」幾萬行應該很快的。轉載請註明出處,本文鏈接:https://www.uj5u.com/net/214468.html
標籤:C#
上一篇:System.Drawing.Image.FromStream(ms);:“引數無效。”
下一篇:C# string id = Request["id"].ToString(); id值為null,是為什么,請各位大佬幫幫忙
