You are on page 1of 3

22/10/2015 Async / Await c# | codigo fuente

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/async­await­c/ 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&#8221
(http://schemas.microsoft.com/winfx/2006/xaml/presentation&#8221);
3.          xmlns:x=”http://schemas.microsoft.com/winfx/2006/xaml&#8221 (http://schemas.microsoft.com/winfx/2006/xaml&#8221);
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/async­await­c/ 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…

Acerca de estos anuncios (https://wordpress.com/about-these-


ads/)
You May Like

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/async­await­c/ 3/3

You might also like