Здравствуйте. На форме имеется кнопка (startButton) и таймер (mainTimer). Таймер циклично меняет надпись кнопки от 0 до 10. При нажатии на кнопку запускается второй поток (который должен запускать таймер, засыпать на 5000 мс, останавливать таймер). То есть, на время сна второго потока, на копке должны меняться цифры. Этого почему-то не происходит. Что делаю не так?
Код | using System; using System.Windows.Forms; using System.Threading;
namespace TimerTest { public delegate void WorkerAction();
public partial class MainForm : Form { Worker xWorker; Thread workerThread; int counter;
public MainForm() { InitializeComponent(); xWorker = new Worker(new WorkerAction(mainTimer.Start), new WorkerAction(mainTimer.Stop)); workerThread = new Thread(new ThreadStart(xWorker.Job)); counter = 0; }
private void startButton_Click(object sender, EventArgs e) { workerThread.Start(); }
private void MainTimer_Tick(object sender, EventArgs e) { startButton.Text = counter.ToString();
counter = (counter == 10 ? 0 : counter + 1); } }
public class Worker { WorkerAction beforeJobAction; WorkerAction afterJobAction;
public Worker(WorkerAction _BeforeJobAction, WorkerAction _AfterJobAction ) { beforeJobAction = _BeforeJobAction; afterJobAction = _AfterJobAction; }
public void Job() { beforeJobAction(); Thread.Sleep(5000); afterJobAction(); } } }
|
|