C#创建线程三种方式
2014-04-10 18:10
483 查看
1、利用 System.Timers.Timer 创建线程,同时刷新界面显示,利用SynchronizingObject 的属性,出现卡死状态。
System.Timers.Timer t = new System.Timers.Timer();
private void button_Click(object sender, EventArgs e)
{
t.Interval = 100;
t.Elapsed += new System.Timers.ElapsedEventHandler(t_Elapsed);
t.Enabled = true;
t.SynchronizingObject = label1;
}
void t_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
{
for (int i = 0; i < 100; i++)
{
System.Threading.Thread.Sleep(50);
label1.Text = i.ToString();
}
t.Enabled = false;
}
2、利用ystem.Threading.Thread创建线程,刷新界面,界面能够实时显示
private void button1_Click(object sender, EventArgs e)
{
System.Threading.Thread th = new System.Threading.Thread(new System.Threading.ThreadStart(Run));
th.Start();
label1.Text = "";
}
void Run()
{
for (int i = 0; i < 100; i++)
{
Call(i);
}
t.Stop();
}
delegate void UpCallBack(int i);
void Call(int i)
{
if (this.InvokeRequired)
{
UpCallBack up = new UpCallBack(Call);
this.Invoke(up, new Object[] { i });
}
else
{
System.Threading.Thread.Sleep(200);
label1.Text = i.ToString();
}
}
3、利用 System.Timers.Timer 创建线程,同时刷新界面显示,出现卡死状态。
private void button2_Click(object sender, EventArgs e)
{
System.Timers.Timer timer = new System.Timers.Timer();
timer.Enabled = true;
timer.Elapsed += new System.Timers.ElapsedEventHandler(timer_Elapsed);
timer.Interval = 5000;
}
void timer_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
{
for (int i = 0; i < 100; i++)
{
Call(i);
}
}
3、利用 System.Windows.Forms.Timer 创建线程,同时刷新界面显示,出现卡死状态。
private void button3_Click(object sender, EventArgs e)
{
System.Windows.Forms.Timer tr = new System.Windows.Forms.Timer();
tr.Interval = 5000;
tr.Tick += new EventHandler(tr_Tick);
tr.Start();
}
void tr_Tick(object sender, EventArgs e)
{
for (int i = 0; i < 100; i++)
{
Call(i);
}
}
System.Timers.Timer t = new System.Timers.Timer();
private void button_Click(object sender, EventArgs e)
{
t.Interval = 100;
t.Elapsed += new System.Timers.ElapsedEventHandler(t_Elapsed);
t.Enabled = true;
t.SynchronizingObject = label1;
}
void t_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
{
for (int i = 0; i < 100; i++)
{
System.Threading.Thread.Sleep(50);
label1.Text = i.ToString();
}
t.Enabled = false;
}
2、利用ystem.Threading.Thread创建线程,刷新界面,界面能够实时显示
private void button1_Click(object sender, EventArgs e)
{
System.Threading.Thread th = new System.Threading.Thread(new System.Threading.ThreadStart(Run));
th.Start();
label1.Text = "";
}
void Run()
{
for (int i = 0; i < 100; i++)
{
Call(i);
}
t.Stop();
}
delegate void UpCallBack(int i);
void Call(int i)
{
if (this.InvokeRequired)
{
UpCallBack up = new UpCallBack(Call);
this.Invoke(up, new Object[] { i });
}
else
{
System.Threading.Thread.Sleep(200);
label1.Text = i.ToString();
}
}
3、利用 System.Timers.Timer 创建线程,同时刷新界面显示,出现卡死状态。
private void button2_Click(object sender, EventArgs e)
{
System.Timers.Timer timer = new System.Timers.Timer();
timer.Enabled = true;
timer.Elapsed += new System.Timers.ElapsedEventHandler(timer_Elapsed);
timer.Interval = 5000;
}
void timer_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
{
for (int i = 0; i < 100; i++)
{
Call(i);
}
}
3、利用 System.Windows.Forms.Timer 创建线程,同时刷新界面显示,出现卡死状态。
private void button3_Click(object sender, EventArgs e)
{
System.Windows.Forms.Timer tr = new System.Windows.Forms.Timer();
tr.Interval = 5000;
tr.Tick += new EventHandler(tr_Tick);
tr.Start();
}
void tr_Tick(object sender, EventArgs e)
{
for (int i = 0; i < 100; i++)
{
Call(i);
}
}
相关文章推荐
- c#中如何控制模态子窗体中的进度条
- C#中的枚举类型,原来有这么多用法
- C#.net----方法
- 权限系统收获——C#递归方法实现zTree
- C# 中ref和out的区别
- C# 中ref和out的区别
- C#: 实现支持断点续传多线程下载
- c#学习笔记之时间类
- c# -- 实现浏览功能(备忘)
- C#Windows窗体应用程序MyKTV项目
- C#中使用Split分隔字符串的技巧 (转自百度文库)
- 02-C#入门(循环)
- C#中如何判断两个哈希表相同Key的值
- 介绍一个C# API 生成工具
- C#l连接socket跨外网连接
- c#计算一段代码的时间复杂度
- How to read data from csv file in c#
- c#学习笔记之阶乘遇到问题
- 12306弹窗,很好的C#网页操作分析过程
- C#-正则表达式的使用---ShinePans