启动一个线程,让其从指定文件中一秒钟读取一行数据并且读一条在textbox中同步显示一条,并非读完之后全部显示,而且前面显示过的内容就不再读取也不能清空textbox后再次显示。求解高人速救
解决方案 »
- datalist取第一行第一列数据,第二行第一列数据。。。。急
- C/S传输问题.
- Winform中有没有这样的控件
- 报表打印多列的问题
- 我想问一下高手关于List 集合的问题。
- C#关闭释放网络流
- 一个很复杂的东西。。。麻烦高手给解释下怎么应用了?
- 着急啊,就是孟兄的那个用WebClient上传的代码,如果需要服务器需要验证身份怎么办。在线等。。。。。。
- CollectionBase的OnRemoveComplete重载问题。在Design更改显示界面时
- C#操作word,如何直接在word文档中生成柱状图?
- C# 怎么获得启动目录?
- vs2008 开发环境 编写代码时没有自动检查错误提示??
public partial class Form1 : Form
{
private Thread updateThread; public Form1() {
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e) {
updateThread = new Thread(UpdateThread);
updateThread.Start(@"D:\Test.txt");
} private void UpdateThread(object fileName) {
using (StreamReader reader = new StreamReader(fileName as string)) {
string line = null;
while ((line = reader.ReadLine()) != null) {
textBox2.AppendText(line + "\r\n");
Thread.Sleep(1000);
}
}
} private void Form1_FormClosing(object sender, FormClosingEventArgs e) {
updateThread.Abort();
}
}
private void Start()
{
String strText = String.Empty;
using (StreamReader sr = new StreamReader("D:\\1.txt"))
{
strText = sr.ReadLine();
while (!strText.Equals("\0"))
{
textBox1.Text += strText;
strText = sr.ReadLine();
Thread.Sleep(1000);
}
sr.Close();
}
} private void button1_Click(object sender, EventArgs e)
{
Thread thread = new Thread(new ThreadStart(Start));
thread.Start();
}
private void Start()
{
using (StreamReader sr = new StreamReader("D:\\1.txt"))
{
while (!sr.EndOfStream)
{
textBox1.AppendText(sr.ReadLine());
Thread.Sleep(1000);
}
}
} private void button1_Click(object sender, EventArgs e)
{
Thread thread = new Thread(new ThreadStart(Start));
thread.Start();
}
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.IO;
using System.Text;
using System.Windows.Forms;namespace testForm
{
public partial class Form1 : Form
{
public FileStream fs;
public StreamReader sr; public Form1()
{
InitializeComponent();
} private void Form1_Load(object sender, EventArgs e)
{
fs = new FileStream(@"D:\aaa.txt", FileMode.Open, FileAccess.Read, FileShare.ReadWrite, 1, true);
sr = new StreamReader(fs);
timer1.Interval = 1000;
timer1.Enabled = true;
} private void timer1_Tick(object sender, EventArgs e)
{
string readString = string.Empty;
readString = sr.ReadLine();
if (readString != null)
{
if (richTextBox1.Text == "")
{
richTextBox1.Text = richTextBox1.Text + readString;
}
else
{
richTextBox1.Text = richTextBox1.Text + "\r\n" + readString;
}
}
else
{
sr.Close();
fs.Close();
timer1.Enabled = false;
}
}
}
}
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.IO;
using System.Text;
using System.Windows.Forms;namespace testForm
{
public partial class Form1 : Form
{
//文件流
public FileStream fs;
//读取流
public StreamReader sr; public Form1()
{
InitializeComponent();
} private void Form1_Load(object sender, EventArgs e)
{
//以读权限打开D盘中的aaa.txt文件
fs = new FileStream(@"D:\aaa.txt", FileMode.Open, FileAccess.Read, FileShare.ReadWrite, 1, true);
//以fs初始化sr
sr = new StreamReader(fs);
//设置timer1的interval为1000毫秒,即1秒,意思是每过1秒钟触发一次timer1的Tick事件
timer1.Interval = 1000;
//设置timer1可用,默认情况下timer1不可用
timer1.Enabled = true;
} private void timer1_Tick(object sender, EventArgs e)
{
//readString存放按行读取的数据
string readString = string.Empty;
//按行读取数据
readString = sr.ReadLine();
//readString != null即文件未读完
if (readString != null)
{
if (richTextBox1.Text == "")
{
//读取的数据是文件中的第一行数据
richTextBox1.Text = richTextBox1.Text + readString;
}
else
{
//读取的数据不是文件中的第一行数据
richTextBox1.Text = richTextBox1.Text + "\r\n" + readString;
}
}
else
{
//关闭sr
sr.Close();
//关闭fs
fs.Close();
//设置timer1不可用,即使timer1的Tick事件不会再被触发
timer1.Enabled = false;
}
}
}
}
public Form1()
{
InitializeComponent();
CheckForIllegalCrossThreadCalls = false;
} private void button1_Click(object sender, EventArgs e)
{
Thread thread = new Thread(new ThreadStart(Start));
thread.Start();
} private void Start()
{
using (StreamReader sr = new StreamReader("D:\\a.txt"))
{
while (!sr.EndOfStream)
{
textBox1.AppendText(sr.ReadLine() + "\r\n");
Thread.Sleep(1000);
}
}
}
修改了下
进程间不可操作去掉了
public FileStream fs;
//读取流
public StreamReader sr; //行号
int lines=0; private void timer1_Tick(object sender, EventArgs e)
{
//readString存放按行读取的数据
string readString = string.Empty;
//按行读取数据
readString = sr.ReadLine();
//readString != null即文件未读完
if (readString != null)
{
lines++; if (richTextBox1.Text == "")
{
//读取的数据是文件中的第一行数据
richTextBox1.Text = richTextBox1.Text + readString;
}
else
{
//读取的数据不是文件中的第一行数据
richTextBox1.Text = richTextBox1.Text + "\r\n" + readString;
}
}
else
{
//关闭sr
sr.Close();
//关闭fs
fs.Close();
//设置timer1不可用,即使timer1的Tick事件不会再被触发
timer1.Enabled = false;
}
}
{
//读取的数据是文件中的第一行数据
richTextBox1.Text = lines.ToString() + ":" + richTextBox1.Text + readString;
}
else
{
//读取的数据不是文件中的第一行数据
richTextBox1.Text = lines.ToString() + ":" + richTextBox1.Text + "\r\n" + readString;
}