Мне стало известно, насколько часто нужно писать следующий код в управляемом событиями графическом интерфейсе, где
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;
}
}
Это неудобный шаблон в С#, как для запоминания, так и для ввода. Кто-нибудь придумал какой-то ярлык или конструкцию, которая автоматизирует это до определенной степени? Было бы здорово, если бы был способ привязать функцию к объектам, выполняющим эту проверку, без необходимости выполнять всю эту дополнительную работу, например, ярлык типа object1.InvokeIfNecessary.visible = true
.
Предыдущие ответы обсуждали нецелесообразность просто вызова Invoke() каждый раз, и даже тогда синтаксис Invoke() неэффективен и все еще неудобен для решения.
Итак, кто-нибудь понял какие-нибудь ярлыки?