c# - "Cannot implicitly convert type void..." getting this error from async method -


when try run code below getting error says "cannot implicitly convert type void "program.traindataresult". trying return traindataresult object form async method can use other methods in app. suggestions? confused why async method returning void when have specified should return traindataresult object wrapped in task.

    using system; using system.collections.generic; using system.linq; using system.text; using system.threading.tasks; using system.net.http; using system.net.http.headers; using system.xml.serialization; using system.xml; using system.io;  namespace ctaapijim {    public class program    {        [xmlroot(elementname = "ctatt", datatype = "string", isnullable = true)]        public class traindataresult        {            [xmlelement(elementname = "tmst")]            public string timestamp { get; set; }             [xmlelement(elementname = "errcd")]            public byte errorcode { get; set; }             [xmlelement(elementname = "errnm")]            public string errorname { get; set; }             [xmlelement(elementname = "eta")]            public traindata eta { get; set; }        }         [serializable()]        public class traindata        {            [xmlelement(elementname = "staid")]            public ushort stationid { get; set; }             [xmlelement(elementname = "stpid")]            public ushort stopid { get; set; }             [xmlelement(elementname = "stanm")]            public string stationname { get; set; }             [xmlelement(elementname = "stpde")]            public string stopdesc { get; set; }             [xmlelement(elementname = "rn")]            public ushort runnum { get; set; }             [xmlelement(elementname = "rt")]            public string routename { get; set; }             [xmlelement(elementname = "destst")]            public ushort deststation { get; set; }             [xmlelement(elementname = "destnm")]            public string destname { get; set; }             [xmlelement(elementname = "trdr")]            public byte traindir { get; set; }             [xmlelement(elementname = "prdt")]            public string prdtime { get; set; }             [xmlelement(elementname = "arrt")]            public string arrtime { get; set; }             [xmlelement(elementname = "isapp")]            public ushort isapp { get; set; }             [xmlelement(elementname = "issch")]            public ushort issch { get; set; }             [xmlelement(elementname = "isdly")]            public ushort isdly { get; set; }             [xmlelement(elementname = "isflt")]            public ushort isflt { get; set; }             [xmlelement(elementname = "flags")]            public string flags { get; set; }             [xmlelement(elementname = "lat")]            public double lat { get; set; }             [xmlelement(elementname = "lon")]            public double lon { get; set; }             [xmlelement(elementname = "heading")]            public ushort heading { get; set; }       }        private const string url = "http://lapi.transitchicago.com/api/1.0/ttarrivals.aspx?key=d94463bf32094ac6bb1417cd8f850a23&mapid=41300&max=1";        static void main(string[] args)       {             traindataresult td = runasync().wait();       }       static async task<traindataresult> runasync()       {           using (var client = new httpclient())           {                                                 var response = await client.getasync(url);               if (response.issuccessstatuscode)               {                     //get data cta api                   var xml = await response.content.readasstringasync();                   var ds = new xmlserializer(typeof(traindataresult), new xmlrootattribute("ctatt"));                   using (stringreader sr = new stringreader(xml))                   {                       using (xmlreader xr = xmlreader.create(sr))                       {                           var traindataresult = (traindataresult)ds.deserialize(xr);                              return traindataresult;                             //calculate difference in time between arrival time , current time                            /* traindataresult.eta.arrtime = traindataresult.eta.arrtime.substring(9);                             timespan traintime = timespan.parse(traindataresult.eta.arrtime);                             var timeofday = datetime.now.timeofday;                             timespan arrmins = (traintime - timeofday);                            console.writeline("station name: {0}\nroute name: {1}\narrival time: {2}\nrun number: {3}\ndirection: {4}", traindataresult.eta.stationname, traindataresult.eta.routename, arrmins, traindataresult.eta.runnum, traindataresult.eta.stopdesc);                           */                                                                      }                   }               }               else               {                   console.writeline("there error!");               }            }         }     } } 

you can't have local variable same name type; local variable "hide" name of type.

change name of class traindataresult traindataresult, , error should clear up.


Comments