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