//定义委派函数(参数与要线程中要执行的函数的参数一致)
public delegate void ChangeForm( object o, string str );
//changeConNum函数用于修改标签的文字,用于委派到ChangeForm
private void changeConNum(Object L, String s) //函数返回值需要与ChangeForm的一致(void)
{
if ( ( ( Label )L ).InvokeRequired) //如果这个标签需要InvokeRequired
{
ChangeForm changeForm = new ChangeForm(changeConNum); //将changeConNum这个函数Invoke ->
this.Invoke(changeForm, new object[] { L,s }); //参数列表L,S
}
else //如果不需要则直接修改
{
( ( Label ) L ).Text = s;
}
}
本文介绍了一种在多线程环境下更新UI组件的方法。通过定义委派函数ChangeForm,并检查InvokeRequired属性来确定是否需要跨线程调用。若需要,则使用Invoke方法执行委派;若不需要,则直接修改UI元素。
190

被折叠的 条评论
为什么被折叠?



