string - c# return data from Asynchronous function -
i have 2 methods
public void getemp() { httpwebrequest request = (httpwebrequest)httpwebrequest.create(new system.uri("http://sdw2629/empservice/employeeinfo.svc/employee")); request.method = "get"; request.contenttype = "application/json; charset=utf-8"; request.begingetresponse(new asynccallback(readwebrequestcallback), request); } and
private void readwebrequestcallback(iasyncresult callbackresult) { httpwebrequest myrequest = (httpwebrequest)callbackresult.asyncstate; using (httpwebresponse myresponse = (httpwebresponse)myrequest.endgetresponse(callbackresult)) { using (streamreader httpwebstreamreader = new streamreader(myresponse.getresponsestream())) { string results = httpwebstreamreader.readtoend(); //execute ui stuff on ui thread. } } } here want return string "results" other method
string data= obj1.getemp() how can achieve this.. appriciated.. thanks
easiest way rewrite method using async, this:
public async task<string> getempasync() { httpwebrequest request = (httpwebrequest)httpwebrequest.create(new system.uri("http://sdw2629/empservice/employeeinfo.svc/employee")); request.method = "get"; request.contenttype = "application/json; charset=utf-8"; var response = await request.getresponseasync(); using (streamreader httpwebstreamreader = new streamreader(response.getresponsestream())) { string results = await httpwebstreamreader.readtoendasync(); //execute ui stuff on ui thread. return results; } } then can result code this:
var results = await getempasync(); if using older version , don't have async, can in blocking way result:
public string getempblocking() { httpwebrequest request = (httpwebrequest)httpwebrequest.create(new system.uri("http://sdw2629/empservice/employeeinfo.svc/employee")); request.method = "get"; request.contenttype = "application/json; charset=utf-8"; var response = request.getresponse(); using (streamreader httpwebstreamreader = new streamreader(response.getresponsestream())) { string results = httpwebstreamreader.readtoend(); //execute ui stuff on ui thread. return results; } } and result this:
var results = getresultblocking(); Р.s. can consider using microsoft.bcl.async support async in earlier versions.
Comments
Post a Comment