现在的位置: 首页 > 综合 > 正文

在Main Thread之外的线程中更新Control的属性

2013年11月12日 ⁄ 综合 ⁄ 共 624字 ⁄ 字号 评论关闭

在.net中不能直接在UI Control的创建线程之外修改UI Control的属性和内容。一个基本办法是通过调用UIControl 的Invoke方法。考虑一个简单的例子:我们希望在一个通过btnStart启动的线程A中,每隔10秒把txtTime的Text属性更新为:线程A的线程名+线程A传入的“当前时间”。

 

下面是主要代码

private void btnStart_Click(object sender, System.EventArgs e)
{
 Thread th = new Thread(new ThreadStart(WorkThreadMethod));
 th.Name = "TH" + i;
 th.Start();
}

public delegate void UpdateTextCallback(string threadName, DateTime time);

private void WorkThreadMethod()
{
 Thread.Sleep(10000);
 txtTime.Invoke(new UpdateTextCallback(this.UpdateText), new object[]{Thread.CurrentThread.Name, DateTime.Now});
}

private void UpdateText(string threadName, DateTime)
{
  txtTime.Text = threadName + time.ToString();
}

抱歉!评论已关闭.