Я хочу прочитать одну строку и поместить ее в текстовое поле через каждые 1 секунду. Мне удалось этот код:Таймер и цикл while
private void button1_Click(object sender, EventArgs e)
{
while ((line = file.ReadLine()) != null)
{
timer.Start();
}
}
private void timer1_Tick(object sender, EventArgs e)
{
textBox1.text += line + "\r\n";
}
Но line
не доступна. Я также пробовал что-то вроде этого:
private void button1_Click(object sender, EventArgs e)
{
timer.Start();
}
private void timer1_Tick(object sender, EventArgs e)
{
while ((line = file.ReadLine()) != null)
{
textBox1.Text += line + "\r\n";
}
}
Но он игнорирует интервал таймера. Более того, я не знаю, как я могу остановить таймер в обоих примерах. Можете ли вы дать мне совет, что я могу сделать с этим?
Редактировать
Любые идеи, почему этот код хорошо работает с if
, но не с while
?
private void timer1_Tick(object sender, EventArgs e)
{
while ((line1 = file1.ReadLine()) != null)
{
while ((line2 = file2.ReadLine()) != null)
{
try
{
//some code
}
catch
{
//some code
}
finally
{
//some code
}
}
}
timer1.Stop();
}
Я хочу объединить все строки из file2
с каждой строкой из file1
.
Первый пример будет делать странные вещи, Второй пример очень неясно, так как мы не знаем, как таймер инициализируется – lokusking
Подсказка: сделайте его глобальным и в timer1_Tick(), прочитайте следующую строку, отобразите его и запустите свой таймер. –
Первый блок кода говорит «для каждой строки в файле, запустите таймер». Я думаю, что это может быть частью вашей проблемы. Если вы поместите 'timer.Start' после блока while, вы можете получить немного дальше. Я также не знаю, что вы подразумеваете под «Но« строка »недоступна». Вы имеете в виду, что текст не отображается в текстовом поле, но вы ожидаете? Вы также не добавляете ни одну из этих строк в текстовое поле внутри этого цикла, поэтому весь файл (за исключением последней «строки», который будет иметь значение null) считывается и отбрасывается прежде, чем что-либо еще произойдет. –