Mir ist schmerzlich bewusst geworden, wie oft man das folgende Codemuster in ereignisgesteuerten GUI-Code schreiben muss, wo
private void DoGUISwitch() {
// cruisin for a bruisin' through exception city
object1.Visible = true;
object2.Visible = false;
}
wird:
private void DoGUISwitch() {
if (object1.InvokeRequired) {
object1.Invoke(new MethodInvoker(() => { DoGUISwitch(); }));
} else {
object1.Visible = true;
object2.Visible = false;
}
}
Dies ist ein umständliches Muster in C #, sowohl zum Erinnern als auch zum Tippen. Hat jemand eine Verknüpfung oder ein Konstrukt entwickelt, das dies bis zu einem gewissen Grad automatisiert? Es wäre cool, wenn es eine Möglichkeit gäbe, Objekten, die diese Prüfung durchführen, eine Funktion zuzuweisen, ohne all diese zusätzlichen Arbeiten wie eine object1.InvokeIfNecessary.visible = true
Typverknüpfung ausführen zu müssen.
In früheren Antworten wurde die Unpraktikabilität diskutiert, jedes Mal nur Invoke () aufzurufen, und selbst dann ist die Invoke () -Syntax sowohl ineffizient als auch immer noch umständlich zu handhaben.
Hat jemand irgendwelche Abkürzungen herausgefunden?
object1.InvokeIfNecessary.Visible = true
Linie inspiriert ist. Schauen Sie sich meine aktualisierte Antwort an und teilen Sie mir Ihre Meinung mit.