0

Если использовать в цикле паузу System.Threading.Thread.Sleep(1000), то на паузу ставится вся программа. Мне нужно, чтобы во время паузы в цикле я мог нажимать на кнопки Windows Forms.

Login
  • 21
  • Во время нажатия на кнопку я буду выходить из цикла. – 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

1 Answers1

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