C# wpf Dispatch invoke

  1. 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();  
            }  
              
        }  
    }  
    

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值