如何在多线程中调用winform窗体控件
1个回答
展开全部
(1)窗体及控件
(2)窗体代码Form1.cs
using System;
using System.Collections.Generic;
using System.Windows.Forms;
using System.Threading;
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
// 启动线程
Thread t = new Thread(MyThread);
t.IsBackground = true;
t.Start();
}
void MyThread()
{
while (true)
{
// 在控件label1上显示日期和时间
UpdateLabel(DateTime.Now);
Thread.Sleep(1000);
}
}
// 1. 声明一个委托
delegate void UpdateLableDelegate(DateTime dt);
private void UpdateLabel(DateTime dt)
{
if (label1.InvokeRequired)
{
// 跨线程更新label1处理
UpdateLableDelegate del =
new UpdateLableDelegate(UpdateLabel);
label1.Invoke(del, dt);
}
else
{
// 显示日期和时间
label1.Text = dt.ToString("yyyy-MM-dd HH:mm:ss");
}
}
}
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询