我的控件在加载数据时会显示动画,当线程完成后,我会隐藏动画并显示控件。所以我正在从一个线程中执行以下代码:
protected void InvokeEnableBackControl()
{
if (this.InvokeRequired)
{
this.Invoke(new OpHandler(EnableBackControl));
}
else
{
EnableBackControl();
}
}
有时候当我执行这段代码时,主线程会在以下代码中卡住:
protected virtual void EnableBackControl()
{
if (overlayAnimation.TargetControl != null)
{
overlayAnimation.TargetControl.BringToFront();
}
overlayAnimation.SendToBack();
overlayAnimation.Enabled = false;
overlayAnimation.Visible = false;
我不确定是设置Enable
属性还是Visible
属性导致了程序卡住。您知道哪些情况可能会导致在Control.Invoke
中调用这些属性时程序卡住吗?