UI界面:
<Window x:Class="InheritDemo.Window1"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"Title="Window1" Height="300" Width="300"><Grid><StackPanel><Label MouseEnter="Label_MouseEnter" MouseLeave="Label_MouseLeave">test1</Label></StackPanel></Grid> </Window>
后端代码:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Windows; using System.Windows.Controls; using System.Windows.Data; using System.Windows.Documents; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Imaging; using System.Windows.Navigation; using System.Windows.Shapes; using System.Threading;namespace InheritDemo {/// <summary>/// Window1.xaml 的交互逻辑/// </summary>public partial class Window1 : Window{private Thread myThread = null;//定义线程private delegate void MyDelegate(Object para);//定义委托public Window1(){InitializeComponent();}/// <summary>/// 鼠标移入启动线程(继续挂起线程)/// </summary>/// <param name="sender"></param>/// <param name="e"></param>private void Label_MouseEnter(object sender, MouseEventArgs e){if (myThread == null)//启动线程 {myThread = new Thread(ThreadMethod);myThread.IsBackground = true;//后台线程 myThread.Start(sender);}else { myThread.Resume(); }//继续挂起线程 }/// <summary>/// 鼠标移出挂起线程/// </summary>/// <param name="sender"></param>/// <param name="e"></param>private void Label_MouseLeave(object sender, MouseEventArgs e){if (myThread != null) { myThread.Suspend(); }//挂起线程 }/// <summary>/// 线程事件调用委托/// </summary>/// <param name="para"></param>private void ThreadMethod(object para){MyDelegate myDelegate = new MyDelegate(DelegateMethod);while (true){this.Dispatcher.BeginInvoke(myDelegate, para);//调用委托Thread.Sleep(1000);//休眠1s }}/// <summary>/// 委托事件获取当前时间/// </summary>/// <param name="para"></param>private void DelegateMethod(object para){Label lbl = (Label)para;lbl.Content = DateTime.Now.ToString();}} }