Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Windows;
- using System.Windows.Controls;
- using System.Windows.Data;
- using System.Windows.Documents;
- using System.Windows.Input;
- using System.Windows.Media;
- using System.Windows.Media.Imaging;
- using System.Windows.Navigation;
- using System.Windows.Shapes;
- using System.Threading.Tasks;
- using System.Threading;
- namespace AsyncDemo
- {
- /// <summary>
- /// Interaction logic for MainWindow.xaml
- /// </summary>
- public partial class MainWindow : Window
- {
- private Button _getDataButton;
- private ListBox _data;
- public MainWindow()
- {
- InitializeComponent();
- var grid = new Grid();
- _getDataButton = new Button {Margin = new Thickness(0, 0, 0, 272), Content = "Get my data!"};
- _getDataButton.Click += new RoutedEventHandler(GetMyData);
- _data = new ListBox {Margin = new Thickness(0, 45, 0, 0)};
- grid.Children.Add(_getDataButton);
- grid.Children.Add(_data);
- Content = grid;
- }
- async void GetMyData(object sender, RoutedEventArgs e)
- {
- AddDataToUI("GetMyData - Start - {0}", Thread.CurrentThread.ManagedThreadId);
- Task<int> calculationTask = Calculate();
- AddDataToUI("GetMyData.calculationTask - Start - {0}", Thread.CurrentThread.ManagedThreadId);
- int data = await calculationTask;
- AddDataToUI(data.ToString());
- AddDataToUI("GetMyData - End - {0}", Thread.CurrentThread.ManagedThreadId);
- }
- private async Task<int> Calculate()
- {
- AddDataToUI("Calculate - Start - {0}", Thread.CurrentThread.ManagedThreadId);
- Task<int> calculationTask = Task.Factory.StartNew(() =>
- {
- Thread.Sleep(3000);
- return 10;
- });
- AddDataToUI("calculationTask - await - {0}", Thread.CurrentThread.ManagedThreadId);
- int result = await calculationTask;
- AddDataToUI("Calculate - End - {0}", Thread.CurrentThread.ManagedThreadId);
- return result;
- }
- void AddDataToUI(string data, params object[] args)
- {
- _data.Items.Add(string.Format(data, args));
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement