me han hecho dolorosamente consciente de cuán a menudo uno tiene que escribir el siguiente patrón de código en el código de interfaz gráfica de usuario basada en eventos, dondeautomatizar el patrón de código InvokeRequired
private void DoGUISwitch() {
// cruisin for a bruisin' through exception city
object1.Visible = true;
object2.Visible = false;
}
se convierte en:
private void DoGUISwitch() {
if (object1.InvokeRequired) {
object1.Invoke(new MethodInvoker(() => { DoGUISwitch(); }));
} else {
object1.Visible = true;
object2.Visible = false;
}
}
Este es un patrón incómodo en C#, tanto para recordar como para escribir. ¿Alguien ha encontrado algún tipo de atajo o construcción que automatice esto hasta cierto punto? Sería genial si hubiera una manera de adjuntar una función a los objetos que hace esta comprobación sin tener que pasar por todo este trabajo adicional, como un acceso directo de tipo object1.InvokeIfNecessary.visible = true
.
Anterior answers han discutido la impracticabilidad de simplemente llamar a Invoke() cada vez, e incluso entonces la sintaxis de invocación() es ineficiente y todavía difícil de tratar.
Entonces, ¿alguien ha descubierto algún atajo?
me he preguntado lo mismo, pero en lo que respecta a Dispatcher.CheckAccess de WPF(). –
Un amigo mío señaló esto: http://www.manitra.net/blog/dev/invokerequiredinvoke-easier/ –
Pensé en una sugerencia bastante loca inspirada en tu línea 'object1.InvokeIfNecessary.Visible = true'; mira mi respuesta actualizada y déjame saber lo que piensas. –