110,502
社区成员
发帖
与我相关
我的任务
分享
private void btnRead_Click(object sender, EventArgs e)
{
//HiPerfTimer hpt = new HiPerfTimer();
//hpt.Start();
//线程每次读取文件100K
const long ChunkSize = 102400;
//清理非托管不受GC控制的资源,using结束后会隐式的调用Disposable方法
using (OpenFileDialog fbd = new OpenFileDialog())
{
fbd.Filter = "文本文件|*.txt";
if (fbd.ShowDialog(this) == DialogResult.OK)
{
byte[] bytcontent = new byte[ChunkSize];
FileStream fs = new FileStream(fbd.FileName, FileMode.Open);
//获取文件总大小
long dataLengthToRead = fs.Length;
while (dataLengthToRead > 0)
{
//读取的大小
int lengthRead = fs.Read(bytcontent, 0, Convert.ToInt32(ChunkSize));
Thread t = new Thread(new ParameterizedThreadStart(Readfile));
t.Start(System.Text.Encoding.Default.GetString(bytcontent));
dataLengthToRead -= lengthRead;
}
}
}
//hpt.Stop();
//MessageBox.Show((hpt.Duration/1000).ToString());
}
public delegate void Callback(string str);
private void Readfile(object content)
{
if (richTextBox1.InvokeRequired)
{
Callback call = new Callback(Readfile);
this.BeginInvoke(call, new object[] { content });
}
else
{
this.richTextBox1.AppendText(content.ToString());
this.richTextBox1.AppendText("\r\n");
}
}