2014-09-05 35 views
0

我有以下的任務,我很想初始化一旦應用程序正在運行,並且只是在我App.xaml.cs從App.xaml.cs在Windows Phone上運行任務8

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)。

任何人都可以告訴我如何異步啓動我的任務?

回答

1

您可以使用異步並等待您需要調用任務的位置。

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

真棒的感謝! – 2014-09-05 23:22:31

相關問題