c# winform 通过线程和委托制作时间控件
来源:互联网 发布:淘宝二手闲置 编辑:程序博客网 时间:2024/05/22 01:43
1)不传递参数
using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Text;using System.Windows.Forms;using System.Threading;namespace Test{ public partial class Form1 : Form { private Thread MyThread = null;//定义线程 private delegate void MyDelegate();//定义委托 public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { MyThread = new Thread(MyFun1); MyThread.Start(); } private void MyFun1() { MyDelegate md = new MyDelegate(MyFun2); while (true) { this.Invoke(md); Thread.Sleep(1000); } } private void MyFun2() { lblTime.Text = DateTime.Now.ToString(); } private void Form1_FormClosing(object sender, FormClosingEventArgs e) { if (MyThread != null) { MyThread.Abort(); } } }}
2)传递参数
using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;using System.Threading;namespace DelegateDemo{ public partial class Form1 : Form { private Thread myThread = null;//定义线程 private delegate void MyDelegate(object para);//定义委托 public Form1() { InitializeComponent(); Label lbl = new Label(); lbl.Text = "mouse enter me!"; lbl.AutoSize = true; lbl.Location = new Point(5, 5); lbl.MouseEnter += new EventHandler(lbl_MouseEnter); lbl.MouseLeave += new EventHandler(lbl_MouseLeave); this.Controls.Add(lbl); this.FormClosing+=new FormClosingEventHandler(Form1_FormClosing); } /// <summary> /// 鼠标移入启动线程(继续已挂起的线程) /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void lbl_MouseEnter(object sender, EventArgs e) { if (myThread == null)//启动线程 { myThread = new Thread(ThreadMethod); myThread.Start(sender); } else { myThread.Resume(); }//继续已挂起的线程 } /// <summary> /// 鼠标移出挂起线程 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> void lbl_MouseLeave(object sender, EventArgs e) { if (myThread != null) { myThread.Suspend(); } } /// <summary> /// 线程事件每隔1s调用委托 /// </summary> /// <param name="para"></param> private void ThreadMethod(object para) { MyDelegate myDelegate = new MyDelegate(DelegateMethod); while (true) { this.Invoke(myDelegate, para); Thread.Sleep(1000); } } /// <summary> /// 委托事件显示当前时间 /// </summary> /// <param name="para"></param> private void DelegateMethod(object para) { Label lbl = (Label)para; lbl.Text = DateTime.Now.ToString(); } /// <summary> /// 关闭窗体关闭线程 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void Form1_FormClosing(object sender, FormClosingEventArgs e) { if (myThread != null) { if (myThread.ThreadState == ThreadState.Suspended)//如果线程处于挂起状态 { myThread.Resume();//继续已挂起的线程 } myThread.Abort();//终止线程 } } }}
- c# winform 通过线程和委托制作时间控件
- c# wpf 通过线程和委托制作时间控件
- wpf 委托 Action 通过线程和委托制作时间控件
- Winform 使用委托线程修改控件属性.显示时间示例
- C#制作WinForm控件
- C#制作WinForm控件
- C#制作WinForm控件
- C#制作WinForm控件
- C#制作WinForm控件
- C#制作WinForm控件
- C#制作WinForm控件
- C#制作WinForm控件
- C#制作WinForm控件
- C#制作WinForm控件
- C#制作WinForm控件 .
- C#制作WinForm控件
- C#通过委托处理 控件
- C# winform 防止界面卡住 线程 委托
- IE中不能显示VML的解决办法
- Android之GestureOverlayView
- 程序中的十进制转2进制,和16进制值的体现
- 华硕MeeGo系统上网本国外226美元开售
- 练习题: 170页的E5
- c# winform 通过线程和委托制作时间控件
- C语言字符串函数详解(2) strcpy、strcmp、strcat、strlen、strstr
- CSDN 开山博文
- 电子简历的好处
- MFC Window程序设计(第二版)精华浓缩笔记(二)
- vs2010出现编译错误 fatal error C1189: #error : Need to include strsafe.h after tchar.h
- 搜索框外形
- 如何使用struts2对集合参数进行验证
- 安卓2.3和2.2版本的最大不同——支持推送