c# - Call asynchronous method in constructor? -


summary: call asynchronous method in constructor. possible?

details: have method called getwritings() parses json data. works fine if call getwritings() in async method , put await left of it. , when create longlistview in page , try populate i'm finding getwritings() surprisingly returning null , longlistview empty.

to address problem, tried changing return type of getwritings() task<list<writing>> , retrieving result in constructor via getwritings().result. however, doing ends blocking ui thread.

public partial class page2 : phoneapplicationpage {     list<writing> writings;      public page2()     {         initializecomponent();         getwritings();     }      private async void getwritings()     {         string jsondata = await jsondatamanager.getjsonasync("1");         jobject obj = jobject.parse(jsondata);         jarray array = (jarray)obj["posts"];          (int = 0; < array.count; i++)         {             writing writing = new writing();             writing.content = jsondatamanager.jsonparse(array, i, "content");             writing.date = jsondatamanager.jsonparse(array, i, "date");             writing.image = jsondatamanager.jsonparse(array, i, "url");             writing.summary = jsondatamanager.jsonparse(array, i, "excerpt");             writing.title = jsondatamanager.jsonparse(array, i, "title");              writings.add(writing);         }          mylonglist.itemssource = writings;     } } 

the best solution acknowledge asynchronous nature of download , design it.

in other words, decide application should while data downloading. have page constructor set that view, , start download. when download completes update page display data.

i have blog post on asynchronous constructors may find useful. also, msdn articles; 1 on asynchronous data-binding (if you're using mvvm) , on asynchronous best practices (i.e., should avoid async void).


Comments

Popular posts from this blog

apache - Remove .php and add trailing slash in url using htaccess not loading css -

javascript - jQuery show full size image on click -