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
Post a Comment