C# How can JObject.Parse() wait until it gets json string totally -


i create simple jsondatamanager writing in json format , parsing use later jobject.parse doesn't wait until webclient gets json data , directly use "its going filled json" string. how can push wait until gets json string totally?

public class jsondatamanager{           string mydata = "its going filled json";           public jsondatamanager(string category)         {             string url = "<a href="http://www.kaanbarisbayrak.com/?json=get_category_posts&cat="+category;<br">http://www.kaanbarisbayrak.com/?json=get_category_posts&cat="+catego...</a> />             webclient wc = new webclient();             wc.encoding = system.text.encoding.utf8;             wc.headers["accept"] = "application/json";             wc.downloadstringasync(new uri(url), urikind.relative);             wc.downloadstringcompleted += new downloadstringcompletedeventhandler(wc_downloadstringcompleted);          }           public string getwriting()         {             jobject obj = jobject.parse(mydata);             jarray array = (jarray)obj["posts"];             string writing = (string)array[0]["content"];              return writing;         }            private void wc_downloadstringcompleted(object sender, downloadstringcompletedeventargs e)         {             mydata = e.result;         }       } 

i think want use task<string>. means getwriting() function eventually return string won't block thread. wrap download call in task. can attach continuewith function serves callback receives result , prints screen.

class jsondatamanager {     string url = "http://www.kaanbarisbayrak.com/?json=get_category_posts&cat=";     string data = "";     httpclient hc;      public jsondatamanager(string category)     {         hc = new httpclient();         url += category;     }      public task<string> getwriting()     {         return task.factory.startnew<string>(() =>         {             data = hc.getstringasync(url).result;              // use resulting string             jobject obj = jobject.parse(data);             jarray array = (jarray)obj["posts"];             string writing = (string)array[0]["content"];             return writing;         });     } } 

    private void form1_load(object sender, eventargs e)     {         jsondatamanager manager = new jsondatamanager("4");         manager.getwriting().continuewith((task) =>         {             string writing = task.result;             messagebox.show(writing);         });     } 

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 -