В момент 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; } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д