用StreamReader的ReadLine逐行读取文本文件时,设置了每1S间隔读取一行,读取结果没问题,但执行过程不受时间控制,一下从头读到尾,让我郁闷的。本人对定时读取不熟,请各位高手指教,谢谢!主要代码如下:
System.Timers.Timer t = new System.Timers.Timer(1000);
public StreamReader sr;
public FileStream fst;
string sLine = ""; private void Read_Click(object sender, EventArgs e)
{
try
{
string fileName;
OpenFileDialog ofd = new OpenFileDialog();
if (ofd.ShowDialog() == DialogResult.OK)
{
fileName = ofd.FileName;
fst = new FileStream(fileName, FileMode.Open, FileAccess.Read); }
else
{
MessageBox.Show("文本没打开,请正确选择!");
} }
catch (Exception ee)
{
ee.Message.ToString();
} t.Enabled = true;
t.Elapsed += new System.Timers.ElapsedEventHandler(t_Elapsed);//#############################达到间隔时未执行 } private void t_Elapsed(object sender,System.Timers.ElapsedEventArgs e)
{
sr = new StreamReader(fst, System.Text.Encoding.Default);
sLine = sr.ReadLine();
while (sLine != null)
{
sLine = sr.ReadLine();
//提取行数据
...... }
sr.Close();
fst.Close();
}
System.Timers.Timer t = new System.Timers.Timer(1000);
public StreamReader sr;
public FileStream fst;
string sLine = ""; private void Read_Click(object sender, EventArgs e)
{
try
{
string fileName;
OpenFileDialog ofd = new OpenFileDialog();
if (ofd.ShowDialog() == DialogResult.OK)
{
fileName = ofd.FileName;
fst = new FileStream(fileName, FileMode.Open, FileAccess.Read); }
else
{
MessageBox.Show("文本没打开,请正确选择!");
} }
catch (Exception ee)
{
ee.Message.ToString();
} t.Enabled = true;
t.Elapsed += new System.Timers.ElapsedEventHandler(t_Elapsed);//#############################达到间隔时未执行 } private void t_Elapsed(object sender,System.Timers.ElapsedEventArgs e)
{
sr = new StreamReader(fst, System.Text.Encoding.Default);
sLine = sr.ReadLine();
while (sLine != null)
{
sLine = sr.ReadLine();
//提取行数据
...... }
sr.Close();
fst.Close();
}
Theread延迟操作
或System.Threading.Timer t = new System.Threading.Timer(new TimerCallback(method));
t.Change(1000, 1000);
private void method(object state)
{}