Torna al Thread
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
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 Newtonsoft.Json;
using RestSharp;
namespace WpfApplication5
{
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
public Task Initialization { get; private set; }
public MainWindow()
{
InitializeComponent();
// per mettere codice asincrono nel costruttore ci sono regole da seguire
// esistono varie tecniche spiegate qui: http://blog.stephencleary.com/2013/01/async-oop-2-constructors.html
Initialization = LoadDataAsync();
}
private async void Button_Click(object sender, RoutedEventArgs e)
{
await LoadDataAsync();
}
public async Task LoadDataAsync()
{
var connessione = new Connessione();
var dati = await connessione.GetAsync();
tbkNome.Text = dati.Nome;
tbkStato.Text = dati.Stato;
}
}
public class Connessione
{
public async Task<Dati> GetAsync()
{
RestRequest request = new RestRequest("url servizio");
request.Method = Method.GET;
RestClient client = new RestClient();
var response = await client.ExecuteTaskAsync(request);
Dati dati = JsonConvert.DeserializeObject<Dati>(response.Content);
return dati;
}
}
public class Dati
{
[JsonProperty("nome")]
public string Nome { get; set; }
[JsonProperty("stato")]
public string Stato { get; set; }
}
}