我有一个winform应用程序,主窗体有一个tabcontrol,一个线程会非常频繁地创建或删除标签页。而其他一些后台线程会获取数据并需要访问其中的每个标签页的控件。代码在这里并且可以工作:
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
}
}
问题是,我意识到实际上后台线程需要访问某个标签页,而不是标签控件,是InvokeRequired
检查标签控件的属性,还是我需要检查每个标签页的属性InvokeRequired
?因为有时我觉得 UI 会在短时间内阻塞。
是不是说当tabcontrol可以访问UI线程时,不等于里面的所有tabpage都可以做到这一点?或者可以优化什么?