Advertisement
Guest User

C# 5 Async CTP

a guest
Jun 11th, 2011
385
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 2.56 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Windows;
  6. using System.Windows.Controls;
  7. using System.Windows.Data;
  8. using System.Windows.Documents;
  9. using System.Windows.Input;
  10. using System.Windows.Media;
  11. using System.Windows.Media.Imaging;
  12. using System.Windows.Navigation;
  13. using System.Windows.Shapes;
  14. using System.Threading.Tasks;
  15. using System.Threading;
  16.  
  17. namespace AsyncDemo
  18. {
  19.     /// <summary>
  20.     /// Interaction logic for MainWindow.xaml
  21.     /// </summary>
  22.     public partial class MainWindow : Window
  23.     {
  24.         private Button _getDataButton;
  25.         private ListBox _data;
  26.  
  27.         public MainWindow()
  28.         {
  29.             InitializeComponent();
  30.  
  31.             var grid = new Grid();
  32.  
  33.             _getDataButton = new Button {Margin = new Thickness(0, 0, 0, 272), Content = "Get my data!"};
  34.             _getDataButton.Click += new RoutedEventHandler(GetMyData);
  35.  
  36.             _data = new ListBox {Margin = new Thickness(0, 45, 0, 0)};
  37.  
  38.             grid.Children.Add(_getDataButton);
  39.             grid.Children.Add(_data);
  40.  
  41.             Content = grid;
  42.         }
  43.  
  44.         async void GetMyData(object sender, RoutedEventArgs e)
  45.         {
  46.             AddDataToUI("GetMyData - Start - {0}", Thread.CurrentThread.ManagedThreadId);
  47.             Task<int> calculationTask = Calculate();
  48.  
  49.             AddDataToUI("GetMyData.calculationTask - Start - {0}", Thread.CurrentThread.ManagedThreadId);
  50.             int data = await calculationTask;
  51.  
  52.             AddDataToUI(data.ToString());
  53.             AddDataToUI("GetMyData - End - {0}", Thread.CurrentThread.ManagedThreadId);
  54.         }
  55.  
  56.         private async Task<int> Calculate()
  57.         {
  58.             AddDataToUI("Calculate - Start - {0}", Thread.CurrentThread.ManagedThreadId);
  59.             Task<int> calculationTask = Task.Factory.StartNew(() =>
  60.                                                             {
  61.                                                                 Thread.Sleep(3000);
  62.                                                                 return 10;
  63.                                                             });
  64.             AddDataToUI("calculationTask - await - {0}", Thread.CurrentThread.ManagedThreadId);
  65.             int result = await calculationTask;
  66.  
  67.             AddDataToUI("Calculate - End - {0}", Thread.CurrentThread.ManagedThreadId);
  68.  
  69.             return result;
  70.         }
  71.  
  72.         void AddDataToUI(string data, params object[] args)
  73.         {
  74.             _data.Items.Add(string.Format(data, args));
  75.         }
  76.     }
  77. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement