Wenn ich versuche, den folgenden Code ausführen, bekomme ich eine Fehlermeldung, die besagt, "Typ void nicht implizit in" Program.trainDataResult "konvertieren kann. Ich bin nur Ich versuche, mein trainDataResult-Objekt aus der async-Methode zurückzugeben, damit ich es mit anderen Methoden in meiner App verwenden kann. Irgendwelche Vorschläge? Ich bin verwirrt, warum die async-Methode void zurückgibt, wenn ich angegeben habe, dass es das eingepackte trainDataResult-Objekt zurückgeben soll eine Aufgabe"Kann Typ void nicht implizit konvertieren" Dieser Fehler wird von async-Methode
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 from 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 the difference in time between arrival time and 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 was an error!");
}
}
}
}
}
Mögliches Duplikat von [async/await - wann eine Aufgabe vo void zurückgegeben wird?] (Http://stackoverflow.com/questions/12144077/async-wait-when-to-return-a-task-vs-void) –
Bitte zeigen Sie, in welcher Zeile Sie den Fehler erhalten, zeigen Sie auch den Rest Ihrer Funktion. –
Bitte geben Sie [MCVE] an. Ich kann nicht verstehen, was los ist –