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

时间:2014-09-05 21:52:22

标签: c# xaml windows-phone-8

我有以下任务,我很乐意在应用运行后初始化,只需在我的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)。 / p>

任何人都可以告诉我如何让我的任务异步启动?

1 个答案:

答案 0 :(得分:1)

您可以使用async并等待您需要调用任务的位置。

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();
  }
}