C#工作者线程执行控件刷新方法
2009-10-13 13:00
323 查看
方法一:
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
// 重点
Control.CheckForIllegalCrossThreadCalls = false;
}
private void Form1_Load(object sender, EventArgs e)
{
Thread thread = new Thread(ThreadFuntion);
thread.IsBackground = true;
thread.Start();
}
private void ThreadFuntion()
{
while (true)
{
this.textBox1.Text = DateTime.Now.ToString();
Thread.Sleep(1000);
}
}
}
方法二:
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private delegate void FlushClient();//代理
private bool bShouldStop = false;
// 开始按钮
private void button1_Click(object sender, EventArgs e)
{
Thread thread = new Thread(CrossThreadFlush);
bShouldStop = false;
thread.IsBackground = true;
thread.Start();
}
// 结束按钮
private void button2_Click(object sender, EventArgs e)
{
bShouldStop = true;
}
// 线程函数
private void CrossThreadFlush()
{
//将代理绑定到方法
FlushClient fc = new FlushClient(ThreadFuntion);
while (bShouldStop == false)
{
this.BeginInvoke(fc);
Thread.Sleep(1000);
}
}
// 运行刷新函数
private void ThreadFuntion()
{
this.label1.Text = DateTime.Now.ToString();
// 更多的刷新都可以放到这里
//
}
}
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
// 重点
Control.CheckForIllegalCrossThreadCalls = false;
}
private void Form1_Load(object sender, EventArgs e)
{
Thread thread = new Thread(ThreadFuntion);
thread.IsBackground = true;
thread.Start();
}
private void ThreadFuntion()
{
while (true)
{
this.textBox1.Text = DateTime.Now.ToString();
Thread.Sleep(1000);
}
}
}
方法二:
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private delegate void FlushClient();//代理
private bool bShouldStop = false;
// 开始按钮
private void button1_Click(object sender, EventArgs e)
{
Thread thread = new Thread(CrossThreadFlush);
bShouldStop = false;
thread.IsBackground = true;
thread.Start();
}
// 结束按钮
private void button2_Click(object sender, EventArgs e)
{
bShouldStop = true;
}
// 线程函数
private void CrossThreadFlush()
{
//将代理绑定到方法
FlushClient fc = new FlushClient(ThreadFuntion);
while (bShouldStop == false)
{
this.BeginInvoke(fc);
Thread.Sleep(1000);
}
}
// 运行刷新函数
private void ThreadFuntion()
{
this.label1.Text = DateTime.Now.ToString();
// 更多的刷新都可以放到这里
//
}
}
相关文章推荐
- C#中子线程操作主线程中窗体上控件的方法
- C# Winform 跨线程更新UI控件常用方法汇总
- c#等待所有子线程执行完毕方法
- C# 线程间操作无效: 从不是创建控件“”的线程访问它~~~的解决方法~
- TGraphicControl(自绘就2步,直接自绘自己,不需要调用VCL框架提供的函数重绘所有子控件,也不需要自己来提供PaintWindow函数让管理框架来调用)与TControl关键属性方法速记(Repaint要求父控件执行详细代码来重绘自己,还是直接要求Invalidate无效后Update刷新父控件,就看透明不透明这个属性,因为计算显示的区域有所不同)
- c# winform 用子窗体刷新父窗体,子窗体改变父窗体控件的值两种方法(2)
- C# Winform 跨线程更新UI控件常用方法汇总
- C# 跨线程访问控件的解决方法
- WinForm(C#)中跨线程访问控件的解决方法
- C# Winform 跨线程更新UI控件常用方法总结(转)
- C#一个线程操作另一个线程的控件的方法(转)
- 每隔一段时间自动执行一次某个方法(使用线程)[C#]
- C# 引发“线程间操作无效: 从不是创建控件“XXX”的线程访问它” 解决方法
- C# Winform 跨线程更新UI控件常用方法总结(转)
- C#开启新线程执行方法
- C#一个线程操作另一个线程的控件的方法
- C# 线程操作 出现“从不是创建控件lstUser的线程访问它”错误的解决方法
- C#跨线程操作控件的线程安全方法
- C# :线程中操作多控件 (委托实现异步及同步的方法)
- C# 用户控件调用主窗体的方法(简单的线程用法)