在Windows Phone 8上从App.xaml.cs运行任务

本文关键字:xaml cs 运行 任务 App 上从 Windows Phone | 更新日期: 2023-09-27 18:20:46

我有以下任务,我希望在应用程序运行后初始化,并在我的app.xaml.cs 中填充一个值

public partial class App : Application
{
    public bool ProcessedTask = false;
    public List<Item> Items = new List<Item>();
    public App()
    {
         ...
        // Standard XAML initialization
        InitializeComponent();
        // NOW HERE I WOULD LIKE TO INVOKE MY TASK
    }
    public async Task<string> RequestDataTask()
    {
        HttpClient client = new HttpClient();
        Task<string> getStringRequests = client.GetStringAsync("http://test.com/get/");
        ItemsRootObject responseObject = Newtonsoft.Json.JsonConvert.DeserializeObject<ItemsRootObject>(getStringRequests);
        foreach (Item item in responseObject.rows)
        {
           Items.Add(item);
        }
        ProcessedTask = true;
        string Message = "Processed Task";
        return Message;
    }
}
public class ItemsRootObject
{
    public List<Item> rows { get; set; }
    public bool success { get; set; }
    public int code { get; set; }
    public string msg { get; set; }
}
public class Item 
{
    public string value { get; set; }
}

我已经知道JSON返回和对象在那里是正确的(在常规调用中工作),但我不知道(理解)如何在保持手机应用程序运行的同时调用我的任务(加载MainPage.xaml)

有人能告诉我如何异步启动任务吗?

在Windows Phone 8上从App.xaml.cs运行任务

您可以在需要调用任务的地方使用async和wait。

private async void yourFunction(object sender, RoutedEventArgs e)
{
    string result = await RequestDataTask();
}

http://msdn.microsoft.com/it-it/library/hh191443.aspx

但是,如果您想在构造函数中调用异步方法,请使用以下内容:

public partial class App
{
  private readonly Task _initializingTask;
  public App()
  {
    _initializingTask = Init();
  }
  private async Task Init()
  {
    /*
    Initialization that you need with await/async stuff allowed
    */
    string result = await RequestDataTask();
  }
}