Advertisement
Fhernd

PoolThreadsVsMainThread.cs

Mar 25th, 2016
813
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 2.09 KB | None | 0 0
  1. using System;
  2. using System.Threading;
  3. using System.Threading.Tasks;
  4.  
  5. namespace Recetas.Multithreading.R0402
  6. {
  7.     public class PoolThreadsVsMainThread
  8.     {
  9.         public static void Main()
  10.         {
  11.             Console.WriteLine ("\nAplicación consola ejecutándose sobre el ID thread: {0}",
  12.                 Thread.CurrentThread.ManagedThreadId);
  13.                
  14.             var taskAsincronico = Task.Run ( () =>
  15.                 {
  16.                     Console.WriteLine ("ID Task {0} (asincrónico) ejecutándose sobre el ID de Thread: {1}",
  17.                         Task.CurrentId,
  18.                         Thread.CurrentThread.ManagedThreadId);
  19.                        
  20.                     long suma = 0;
  21.                     // Cálculo de la suma entre 1 y 1000000:
  22.                     for ( int i = 1; i <= 1000000; ++i)
  23.                     {
  24.                         suma += i;
  25.                     }
  26.                    
  27.                     return suma;
  28.                 }
  29.             );
  30.            
  31.             var taskSincronico = new Task<long> ( () =>
  32.                 {
  33.                     Console.WriteLine ("ID Task {0} (sincrónico) ejecutándose sobre el ID de Thread: {1}",
  34.                         Task.CurrentId,
  35.                         Thread.CurrentThread.ManagedThreadId);
  36.                        
  37.                     long suma = 0;
  38.                     // Cálculo de la suma entre 1 y 1000000:
  39.                     for ( int i = 1; i <= 1000000; ++i)
  40.                     {
  41.                         suma += i;
  42.                     }
  43.                    
  44.                     return suma;
  45.                 }
  46.             );
  47.            
  48.             // Inicio de ejecución Task sincrónico:
  49.             taskSincronico.RunSynchronously();
  50.             Console.WriteLine ();
  51.            
  52.             // Visualización de resultados:
  53.             Console.WriteLine ("ID Task {0} retornó: {1:N0}", taskSincronico.Id, taskSincronico.Result);
  54.             Console.WriteLine ("ID Task {0} retornó: {1:N0}\n", taskAsincronico.Id, taskAsincronico.Result);
  55.         }
  56.     }
  57. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement