如果你看明白了这段例子,应该就不难理解了。
这个例子一共提供了三个处理方式,第一个是不安全的,我们就不用看了。
第二个是使用Invoke方法传一个委托进去,分配到UI线程上执行。一般情况下我们都采用这个方法:
private void SetText(string text) { // InvokeRequired required compares the thread ID of the // calling thread to the thread ID of the creating thread. // If these threads are different, it returns true. if (this.textBox1.InvokeRequired) { SetTextCallback d = new SetTextCallback(SetText); this.Invoke(d, new object[] { text }); } else { this.textBox1.Text = text; } }
将委托用Invoke方法调用,可以将委托中的代码传送到UI线程上安全的执行。在这个委托里面,你可以安全的改变任何控件的状态和值,如果你要传递多个参数,看到那个object[]了没?
当然,也可以直接用闭包的形式传进去。
用心看代码,用心写代码。多看多试,这种问题老实说自己试试比来这里提问快多了。
本站所有内容均为互联网搜索引擎提供的公开搜索信息,本站不存储任何数据与内容,任何内容与数据均与本站无关,如有需要请联系相关搜索引擎包括但不限于百度,google,bing,sogou 等
© 2025 tinynews.org All Rights Reserved. 百科问答小站 版权所有