单线程的winfom程序中,设置一个控件的值是很easy的事情,直接 this.TextBox1.value = "Hello World!";就搞定了,但是如果在一个新线程中这么做,比如:private void btnSet_Click(objec ...
单get='_blank'>线程的winfom程序中,设置一个控件的值是很easy的事情,直接 this.TextBox1.value = "Hello World!";就搞定了,但是如果在一个新线程中这么做,比如:
究其原因,
winform中的UI控件不是线程安全的,如果可以随意在任何线程中改变其值,你创建一个线程,我创建一个线程,大家都来抢着更改"TextBox1"的值,没有任何秩序的话,天下大乱...解决办法:using System;namespace ThreadTest public Form1() private void btnSet_Click(object sender, EventArgs e)using System;namespace ThreadTest public Form1() private void btnSet_Click(object sender, EventArgs e) }using System;namespace ThreadTest private void btnSet_Click(object sender, EventArgs e) void Run(object obj) using System;namespace ThreadTest private void btnSet_Click(object sender, EventArgs e) void bw_DoWork(object sender, DoWorkEventArgs e) void bw_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
代码using System.Threading;namespace ThreadTest private void LayoutRoot_MouseLeftButtonDown(object sender, MouseButtonEventArgs e) void SetTextValue(object text)
原标题:WinForm/Silverlight多线程编程中如何更新UI控件的值
关键词:winform
*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们:
admin#shaoqun.com
(#换成@)。