我已经痛苦地意识到,需要多长时间在事件驱动的GUI代码中编写以下代码模式,其中
private void DoGUISwitch() {
// cruisin for a bruisin' through exception city
object1.Visible = true;
object2.Visible = false;
}
变成:
private void DoGUISwitch() {
if (object1.InvokeRequired) {
object1.Invoke(new MethodInvoker(() => { DoGUISwitch(); }));
} else {
object1.Visible = true;
object2.Visible = false;
}
}
这在C#中是一个尴尬的模式,既要记住也要键入。有没有人想出某种捷径或构造可以在某种程度上实现自动化?如果有一种方法可以将函数附加到执行此检查的对象而不必完成所有额外工作(如object1.InvokeIfNecessary.visible = true
类型快捷方式)的方法,那将很酷。
先前的答案已经讨论了每次调用Invoke()都是不切实际的,即使这样,Invoke()语法效率低下,仍然难以处理。
那么,有人知道快捷方式吗?
object1.InvokeIfNecessary.Visible = true
。查看我最新的答案,并让我知道您的想法。