Если использовать в цикле паузу System.Threading.Thread.Sleep(1000), то на паузу ставится вся программа. Мне нужно, чтобы во время паузы в цикле я мог нажимать на кнопки Windows Forms.
Asked
Active
Viewed 1,865 times
0
-
Во время нажатия на кнопку я буду выходить из цикла. – Login Feb 14 '18 at 13:04
-
Может вам подойдет лучше Timer с интервалом 1000 мс? – Zergatul Feb 14 '18 at 13:07
-
Какой из таймеров? У меня не получается их использовать, не могу найти документацию и примеры. – Login Feb 14 '18 at 13:10
-
Вызывай метод асихронно. Форма не будет лочится, но System.Threading.Thread.Sleep(1000) звучит(((( Зачем он тебе вообще? – isaikinvv Feb 14 '18 at 13:12
-
Рисую график, и в промежуток между новыми значениями нужно нажать на одну из кнопок. – Login Feb 14 '18 at 13:13
-
1Вот вам пример. – Bulson Feb 14 '18 at 13:19
1 Answers
0
Простой пример запуска таймера потом его использования. Первой кнопкой запускаем таймер, который увеличивает i. Второй кнопкой помещаем i в поле. Таким способом можно решить Вашу проблему. Программа не будет зависать.
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
int i = 0;
private void button1_Click(object sender, EventArgs e)
{
timer1.Interval = 1000;
timer1.Enabled = true;
}
private void button2_Click(object sender, EventArgs e)
{
textBox1.Text = i.ToString();
}
private void timer1_Tick(object sender, EventArgs e)
{
i++;
}
}
}
UPD В вашем случае цикла не будет, а будет вызываться нужный код в самом таймере (например там будет вызов функции, которая ранее была у Вас в цикле)
Для остановки цикла можно использовать timer1.Enabled = false; , который вызывать при нажатии кнопки
Shpunder
- 159