c# - Issue creating HttpClient helper method -


i have functioning async task calls web service:

private async task getresult() {    using (var client = new httpclient())    {       client.baseaddress = new uri(_baseaddress);       client.defaultrequestheaders.accept.clear();       client.defaultrequestheaders.accept.add(          new mediatypewithqualityheadervalue("application/json"));       client.defaultrequestheaders.add("username", _username);       client.defaultrequestheaders.add("action", "get");       /* etc */       var response = await client.getasync(client.baseaddress);    } } 

i separate out creation of httpclient object can parameterized , reused:

private async task getresult() {    using (var client = getclient(_baseaddress, _username))    {       var response = await client.getasync(client.baseaddress);    } } private static httpclient getclient(string address, string username) {    using (var client = new httpclient())    {       client.baseaddress = new uri(address);       client.defaultrequestheaders.accept.clear();       client.defaultrequestheaders.accept.add(          new mediatypewithqualityheadervalue("application/json"));       client.defaultrequestheaders.add("username", username);       client.defaultrequestheaders.add("action", "get");       /* etc */       return client;    } } 

while appears functionally identical me, latter throws aggregateexception error inner exception

cannot access disposed object. object name: 'system.net.http.httpclient'.

perhaps there async subtlety don't understand?

get rid of using inside of getclient. use using things remain "in ownership", "giving ownership caller" when return client;.

it caller's resposability use using statement (which correctly in getresult).

this has nothing asnyc , standard idisposable behavior.


Comments

Popular posts from this blog

sublimetext3 - what keyboard shortcut is to comment/uncomment for this script tag in sublime -

java - No use of nillable="0" in SOAP Webservice -

ubuntu - Laravel 5.2 quickstart guide gives Not Found Error -