Sono diventato dolorosamente consapevole della frequenza con cui è necessario scrivere il seguente modello di codice nel codice della GUI basato sugli eventi, dove
private void DoGUISwitch() {
// cruisin for a bruisin' through exception city
object1.Visible = true;
object2.Visible = false;
}
diventa:
private void DoGUISwitch() {
if (object1.InvokeRequired) {
object1.Invoke(new MethodInvoker(() => { DoGUISwitch(); }));
} else {
object1.Visible = true;
object2.Visible = false;
}
}
Questo è un modello imbarazzante in C #, sia da ricordare, sia da digitare. Qualcuno ha escogitato una sorta di scorciatoia o costrutto che automatizza questo in una certa misura? Sarebbe bello se ci fosse un modo per associare una funzione agli oggetti che fa questo controllo senza dover passare attraverso tutto questo lavoro extra, come un object1.InvokeIfNecessary.visible = true
collegamento di tipo.
Le risposte precedenti hanno discusso dell'impraticabilità di chiamare Invoke () ogni volta, e anche in questo caso la sintassi di Invoke () è sia inefficiente che tuttora scomoda da gestire.
Quindi, qualcuno ha capito delle scorciatoie?
object1.InvokeIfNecessary.Visible = true
battuta; controlla la mia risposta aggiornata e fammi sapere cosa ne pensi.