Отключить поток из другого события "MouseLeave" - C#
Формулировка задачи:
Всем доброго времени суток.
Есть голая форма с label.
При наведении мышки на нее MouseEnter
Эта label перебирает из массива приветсвия на разных языках.
Это вроде работает но как потом выключить этот поток я не могу
Как выключить его?
Листинг программы
- private void label1_MouseEnter(object sender, EventArgs e)
- {
- Hello hello = new Hello();
- Thread thread = new Thread(new ThreadStart(hello.Run));
- thread.Start();
- while ( thread.IsAlive )
- {
- lb_helloworld.Text = hello.HelloWorld;
- lb_helloworld.Update();
- }
- }
- private void lb_helloworld_MouseLeave(object sender, EventArgs e)
- {
- }
А это сам класс приветсвия где перебираются они
Листинг программы
- class Hello
- {
- private string[] Hi = { "дЅ*好世界", "Hello World", "Привет Мир" };
- bool _Run = true;
- public bool ToRun
- {
- set { _Run = value; }
- }
- public string HelloWorld { get; set; }
- public void Run()
- {
- while ( _Run )
- {
- for ( int i = 0; i < 3; i++ )
- {
- Thread.Sleep(500);
- HelloWorld = Hi[i];
- }
- }
- }
- }
Может передать его на задний фон isBackGround или использовать какой нибудь таймер после чего он выключится сам?
Решение задачи: «Отключить поток из другого события "MouseLeave"»
textual
Листинг программы
- public partial class Form1: Form
- {
- ....
- тело класса вашей формы
- ....
- private Hello _hello;
- private void label1_MouseEnter(object sender, EventArgs e)
- {
- _hello = new Hello();
- Thread thread = new Thread(new ThreadStart(_hello.Run));
- thread.Start();
- while ( thread.IsAlive )
- {
- lb_helloworld.Text = hello.HelloWorld;
- lb_helloworld.Update();
- }
- }
- private void lb_helloworld_MouseLeave(object sender, EventArgs e)
- {
- _hello.ToRun = false; //После выполнения последней итерации в потоке он завершиться
- }
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д