我在主窗体中有一个winform应用程序有一个tabcontrol,一个线程会非常频繁地创建或删除tabpages。其他一些后台线程将获取数据并需要访问其中的每个tabpage页面控件。 代码在这里,可以工作:
public void GetCustomerMessage()
{
if (this.tabControl.InvokeRequired == true)
{
CustomerInforHandler handler = GetCustomerMessage;
this.tabControl.Invoke(handler);
}
else
{
//code to update something in some tabpages
//with foreach tabpage in tabcontrols and use BeginInvoke
}
}
问题是,我意识到后台线程实际上需要访问某个标签页,而不是tabcontrol,是否正确检查tabcontrol的InvokeRequired
属性,或者我需要检查每个标签页' s InvokeRequired
?因为有时候我觉得用户界面会在很短的时间内被阻止。
当tabcontrol可以访问UI线程时,是不是意味着它不等于它内部的所有tabpage都能做到这一点?或者可以优化什么?