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