我有一个winform,其中包含一些在事件处理程序中更新的按钮。该事件从后台线程触发,然后通过Invoke方法设置外观。这些按钮将被启用或禁用。不过,在不可预测的时候会发生一些事情:
以下是按钮在代码中的更新方式:
public class Form1 :Form
{
void eventFromThread(object sender, CustomEventArgs e)
{
if(e.enable) RunOnUiThread(ShowEnabledView);
else RunOnUiThread(ShowDisabledView);
}
void ShowEnabledView()
{
button1.Enabled = true;
}
void ShowDisabledView()
{
button1.Enabled = false;
}
void RunOnUiThread(MethodInvoker method)
{
try
{
if(InvokeRequired)
{
Invoke(method);
}
else
method.Invoke();
}
catch(ObjectDisposedException)
{ return;}
catch(InvalidOperationException)
{return;}
}
}
我已尝试强制刷新按钮,并且尚未重新发生尚未,但它只有几天。这个问题似乎只是在它想要的时候出现,所以我无法确定我正在修理任何事情。任何人都可以对此有所了解吗?
答案 0 :(得分:2)
尝试致电
System.Windows.Forms.Application.DoEvents()
更改按钮的启用属性后