c# - WebClient GET/POST without blocking UI -
i make non blocking , post requests. i've managed solve backgroundworker, need achieve using tasks.
public task<string> post(uri uri, string data) {     return _webclient.uploadstringtaskasync(uri, data); }  public task<string> get(uri uri) {     return _webclient.downloadstringtaskasync(uri); }   i need requests run sequentially. what's proper way implement this? flag methods async , await them? wait each task using task.waitall()?
an example of i'm after:
task<string> logintask = post("login", data); // wait webrequest complete , make use of response string  // use data first request in new request: task<string> someotherrequest = get("details");      
you can use await task.run():
await task.run(()=> { run_ui_blocking_function(); });   for example:
in post() function, can add this:
await task.run(()=> { poststring = post(new uri("url"), "data"); });    and in 'get()' function, can add this:
await task.run(()=> { getstring = get(new uri("url")); });    you'd need add async calling function. here's completed example:
private async void btn_postdata_click(object sender, eventargs e) {     await task.run(()=> { poststring = post(new uri("url"), "data"); });  }   hope helps. it's short , sweet.
Comments
Post a Comment