我正在嘗試創建一個Windows應用程序,該應用程序將加載大約30MB的大型日誌文件。如何在C#Windows應用程序中加載大文件
這裏最好的辦法是什麼,因爲我曾嘗試使用RichTextBox
控件加載它,但會在顯示文件之前阻塞客戶端很長一段時間。
我曾嘗試使用此代碼
textBox1.Text = File.ReadAllText(Path + "\\Data.log");
我一直在使用一個TextBox
和RichTextBox
控制
我正在嘗試創建一個Windows應用程序,該應用程序將加載大約30MB的大型日誌文件。如何在C#Windows應用程序中加載大文件
這裏最好的辦法是什麼,因爲我曾嘗試使用RichTextBox
控件加載它,但會在顯示文件之前阻塞客戶端很長一段時間。
我曾嘗試使用此代碼
textBox1.Text = File.ReadAllText(Path + "\\Data.log");
我一直在使用一個TextBox
和RichTextBox
控制
StringBuilder sb = new StringBuilder();
using (var sr = new StreamReader("path"))
{
do
{
var line = sr.ReadLine();
sb.Append(line);
} while (!sr.EndOfStream);
}
textBox1.Text = sb.ToString();
我認爲你可以將文件虛擬分割成塊,然後加載此塊由試圖加載日誌文件目的。例如,當你打開你的編輯器時,你只加載文件的一部分(一個或幾個塊),然後當用戶向下滾動時 - 加載更多等等。塊的大小取決於用戶打開編輯器時顯示的信息量。
作爲RichTextBox
的示例,您可以試試answer,但您仍然需要確定哪些大小的塊最適合您。
我個人推薦System.IO
+線程。
例子:
string[] files = ["file1.txt", "file2.txt"];
void Main() {
var th = new Thread(readFiles);
th.Start();
}
void readFiles() {
foreach (string file in files) {
var fileContents = "";
fileContents = System.IO.File.ReadAllText(file);
// do something
}
}
線程將幫助,也考慮文件流,但我在一個線程加載,這樣的UI響應停留。 – Trey
我建議加載異步,這樣你的用戶界面不會得到阻止 – taquion
爲什麼你會選擇一個龐大的控件,而不是使用正確的名稱? RichTextBox VTC – Paparazzi