[Windows 8][Opinión] Async Await en Convert Value

En el anterior post comentaba la aparente necesidad de tener una firma Task<object> para el método Convert… pero ahora que lo veo bien esta no es una responsabilidad del convertidor, construir una imagen, como lo propongo en ese artículo, implica tener que acceder a las bibliotecas de archivos, comprobaciones y demás, con todo eso sería una responsabilidad muy grande para mi convertidor. Y aún más el hecho de tener que usar la espera bloqueante que supone el Task.Result

return ImageConvert(value as string).Result;

Y se puede hasta pensar en cosas como realizar el llamado asíncrono y pensar luego en una sincronización… pero créeme, ya es demasiado!

                return Task.Factory.StartNew(() =>
                                          {
                                              var task = ImageConvert(value as string);
                                              return task.Result;
                                          });

… pero entonces, ¿dónde lo ubico? ¡Simple! En el ViewModel :D, bastara con agregar una propiedad, en mi caso una del tipo BitmapIamge llamada Image, y “acomodar” tus métodos para poder crear esta imagen. Luego simplemente en el Template preguntamos por esta propiedad y listo!

            <Border Background="{StaticResource ListViewItemPlaceholderBackgroundThemeBrush}">
                <Image Source="{Binding Image}"
                       Stretch="UniformToFill"
                       AutomationProperties.Name="{Binding Title}"/>
            </Border>

¿Qué ventajas encontré? Pues la que buscaba, poder usar la simplicidad de async/await y claro, corregir ese error de diseño que estaba planteando.

Si tienes alguna opinión no dudes en comentar 🙂

Hasta el próximo post.

Anuncios
[Windows 8][Opinión] Async Await en Convert Value

Un comentario en “[Windows 8][Opinión] Async Await en Convert Value

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s