Uświadomiłem sobie boleśnie, jak często trzeba pisać następujący wzorzec kodu w kodzie GUI sterowanym zdarzeniami, gdzie
private void DoGUISwitch() {
// cruisin for a bruisin' through exception city
object1.Visible = true;
object2.Visible = false;
}
staje się:
private void DoGUISwitch() {
if (object1.InvokeRequired) {
object1.Invoke(new MethodInvoker(() => { DoGUISwitch(); }));
} else {
object1.Visible = true;
object2.Visible = false;
}
}
Jest to niezręczny wzór w języku C #, zarówno do zapamiętania, jak i do pisania. Czy ktoś wymyślił jakiś skrót lub konstrukcję, która do pewnego stopnia automatyzuje to? Byłoby fajnie, gdyby istniał sposób na dołączenie funkcji do obiektów, które wykonują tę kontrolę, bez konieczności przechodzenia przez całą tę dodatkową pracę, na przykład object1.InvokeIfNecessary.visible = true
skrótu typu.
Poprzednie odpowiedzi omawiały niepraktyczność za każdym razem wywoływania Invoke (), a nawet wtedy składnia Invoke () jest zarówno nieefektywna, jak i nadal niezręczna.
Czy ktoś wymyślił jakieś skróty?
object1.InvokeIfNecessary.Visible = true
linią; sprawdź moją zaktualizowaną odpowiedź i daj mi znać, co myślisz.