我正在尝试创建一个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