Professional Documents
Culture Documents
RSS Subscribe: RSS feed
codigo fuente
Aprendiz del NET
Async / Await c#
Posted on mayo 31, 2013
Gracias a las nuevas tecnologías la utilización de métodos asincrónicos se a simplificado mucho con el tiempo. con la venida de visual
estudio 12 es mas fácil su utilización. Recordando que para este ejemplo se necesita tener instalado el FRAMEWORK 4.5…
Async: (http://msdn.microsoft.com/en‑us/library/vstudio/hh191443.aspx)
Esta palabra clave le indica al programa que este método se quiere sincronizar con métodos de forma asincrónica. Que quiere decir que si
usas Async te da la posibilidad de seguir llamando el método en cuestión las veces que quieras; de forma interesante esta palabra no
quiere decir que estas declarando que el método se ejecute de forma asincrónica sino que este método se sincronizara de forma
asincrónica
Await (http://msdn.microsoft.com/en‑us/library/vstudio/hh191443.aspx)
Esta palabra clave lo único que realiza es una espera para un método que ha llamado a otro método asincrónicamente hasta que ese
método termine de ejecutarse.
Comencemos con el ejemplo para ver como funciona esto:
para esto creare un proyecto en visual estudio 12 de tipo WPF.
(https://codigofuentenet.files.wordpress.com/2013/05/snap1051.png)
La idea es probar las dos palabras claves y ver como funcionan para esto en este formulario dibujare dos botones uno que ocupe un
método asincrónico y otro que sea un botón normal.
https://codigofuentenet.wordpress.com/2013/05/31/asyncawaitc/ 1/3
22/10/2015 Async / Await c# | codigo fuente
(https://codigofuentenet.files.wordpress.com/2013/05/snap106.png)
Codigo ventana
1. <Window x:Class=”WpfApplication2.MainWindow”
2. xmlns=”http://schemas.microsoft.com/winfx/2006/xaml/presentation”
(http://schemas.microsoft.com/winfx/2006/xaml/presentation”);
3. xmlns:x=”http://schemas.microsoft.com/winfx/2006/xaml” (http://schemas.microsoft.com/winfx/2006/xaml”);
4. Title=”MainWindow” Height=”162″ Width=”144″>
5. <Grid>
6. <Button Content=”Asincronico” HorizontalAlignment=”Left” Margin=”22,18,0,0″ VerticalAlignment=”Top” Width=”93″
Click=”Button_Click_1″/>
7. <Button Content=”Sincronico” HorizontalAlignment=”Left” Margin=”22,83,0,0″ VerticalAlignment=”Top” Width=”93″
Click=”Button_Click_2″/>
8.
9. </Grid>
10. </Window>
En el botón que es normal colocaría esta programación:
Primero hay que hacer una referencia a este using
using System.Threading;
y luego colocaríamos este código en el clic del botón
Boton sincronico
1. privatevoid Button_Click_2(object sender, RoutedEventArgs e)
2. {
3. MessageBox.Show(“Sin utilizar Async inicio llamada 2”);
4. Thread.Sleep(5000);
5. MessageBox.Show(“Sin utilizar Async final llamada 2”);
6. }
Para el siguiente botón crearía un método que me realice una llamada asincrónica y lo usaría en clic del botón.
El método seria el siguiente:
Metodo correr
1. publicTask correr(Func<Task> pcorrer)
2. {
3. if(pcorrer != null)
4. return TaskEx.RunEx(pcorrer);
5. return null;
6. }
Lo que este método hará será correr la petición asincrónica que le envié el evento clic del botón, en el clic del botón usaría una instrucción
lambda para mandar los mismos mensajes del botón normal solo que en forma asincrónica.
que daría de estas forma:
Boton Asincronico
1. privateasyncvoid Button_Click_1(object sender, RoutedEventArgs e)
2. {
3. Func<Task> asyncLamda = async () =>
4. {
5. MessageBox.Show(“Utilizando Async inicio llamada 1”);
6. await TaskEx.Delay(5000);
7. MessageBox.Show(“Utilizando Async final llamada 1”);
8. };
https://codigofuentenet.wordpress.com/2013/05/31/asyncawaitc/ 2/3
22/10/2015 Async / Await c# | codigo fuente
8. };
9. await correr(asyncLamda);
10. }
Bueno solo queda probarlo esto seria tan fácil como correrlo y dar clic en el el primer botón, el de forma asincrónica y luego dar clic en el
segundo y ver el resultado; se lograría ver que si me permite la oportunidad de llamar el mensaje del segundo botón.
pruébalo y comprobaras los resultados da clic en el segundo botón y trata de dar clic en el primero y no es posible pero en el primer
botón si es posible.
Espero que te sirva de algo…
1. 14
Bathroom Inventions You Didn't
Realize You Needed 3 months ago
huffingtonpost.com Huffington Post
HuffingtonPost.com (AOL) The
Huffington Post News Team The
Posted in: WPF (https://codigofuentenet.wordpress.com/category/wpf/)
Be the first to start a conversation
Crea un blog o un sitio web gratuitos con WordPress.com.
El tema Inuit Types.
https://codigofuentenet.wordpress.com/2013/05/31/asyncawaitc/ 3/3