В момент Thread.Sleep приложение не отвечает - C#
Формулировка задачи:
На форме два текстовых поля, из одного из них при нажатии на кнопку получаем значение. Затем нужно чтоб, через каждую секунду выводить (ето значение - 1) в текстовое поле, короче счет секунд. Вот написал, но при запуске и нажатии на кнопку окно виснет, до тех пор пока переменная не будет равна 0, и потом только её выводит. В чем загвоздка?
private void button1_Click(object sender, EventArgs e)
{
int sec;
sec = Convert.ToInt32(textBox3.Text);
while (sec != 0)
{
if (sec == 0)
{
textBox1.Text = "lol";
}
else
{
sec--;
Thread.Sleep(1000);
textBox3.Text = Convert.ToString(sec);
}
}
}Решение задачи: «В момент Thread.Sleep приложение не отвечает»
textual
Листинг программы
namespace WindowsFormsApplication1
{
partial class Form1
{
/// <summary>
/// Требуется переменная конструктора.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Освободить все используемые ресурсы.
/// </summary>
/// <param name="disposing">истинно, если управляемый ресурс должен быть удален; иначе ложно.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Код, автоматически созданный конструктором форм Windows
/// <summary>
/// Обязательный метод для поддержки конструктора - не изменяйте
/// содержимое данного метода при помощи редактора кода.
/// </summary>
private void InitializeComponent()
{
this.startButton = new System.Windows.Forms.Button();
this.startValueTextBox = new System.Windows.Forms.TextBox();
this.infoLabel = new System.Windows.Forms.Label();
this.SuspendLayout();
//
// startButton
//
this.startButton.Location = new System.Drawing.Point(48, 123);
this.startButton.Name = "startButton";
this.startButton.Size = new System.Drawing.Size(75, 23);
this.startButton.TabIndex = 0;
this.startButton.Text = "button1";
this.startButton.UseVisualStyleBackColor = true;
this.startButton.Click += new System.EventHandler(this.StartButton_Click);
//
// startValueTextBox
//
this.startValueTextBox.Location = new System.Drawing.Point(12, 12);
this.startValueTextBox.Name = "startValueTextBox";
this.startValueTextBox.Size = new System.Drawing.Size(260, 20);
this.startValueTextBox.TabIndex = 1;
//
// infoLabel
//
this.infoLabel.AutoSize = true;
this.infoLabel.Location = new System.Drawing.Point(13, 39);
this.infoLabel.Name = "infoLabel";
this.infoLabel.Size = new System.Drawing.Size(35, 13);
this.infoLabel.TabIndex = 2;
this.infoLabel.Text = "label1";
//
// Form1
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(284, 262);
this.Controls.Add(this.infoLabel);
this.Controls.Add(this.startValueTextBox);
this.Controls.Add(this.startButton);
this.Name = "Form1";
this.Text = "Form1";
this.ResumeLayout(false);
this.PerformLayout();
}
#endregion
private System.Windows.Forms.Button startButton;
private System.Windows.Forms.TextBox startValueTextBox;
private System.Windows.Forms.Label infoLabel;
}
}