asynchronous - Example of an Async Method that uses the main thread without blocking it.c# -


in page 18 concurrency in c# cookbook,stephen cleary define asynchronous programming : "a form of concurrency uses futures or callbacks avoid unnecessary threads." in code async method uses multi threads (thread pool). can same 1 please show me example of async method uses main thread without blocking it.

consider, example, method sends http request , gives http response. if method synchronous (e.g. webrequest.getresponse()) 90% time method wait due network latency, , hence thread on method executed sleep , nothing.

when using async method (e.g. httpclient.postasync()) , await result, calling method ends first await, calling thread free process other work or can returned threadpool. when http response received, work resumed.

the thread on continuation run depends on synchronizationcontext. so, if ran , awaited async method ui thread, continuation run on ui thread. if ran , awaited async method background thread continuation run on threadpool thread.

async void button_click(object sender, eventargs args) {     _button.enabled = false; // invoked on main thread      var response = await _httpclient.postasync(request);      // not block main thread , ui responsive     // won't occupy threadpool thread time response      processresponse(response); // invoked on main thread } 

some async methods run in background , occupy background thread time needed completed, , (io basically) not.


Comments

Popular posts from this blog

sql - invalid in the select list because it is not contained in either an aggregate function -

Angularjs unit testing - ng-disabled not working when adding text to textarea -

How to start daemon on android by adb -