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