Danke für alle Antworten, ich schätze es sehr und habe viel gelernt! Ich habe auch gelernt, dass ich so viel zu lernen habe und die Bücher schlagen werde.Meine Aufgabe wartet nicht auf die Fertigstellung
Ich versuche immer noch, den Hang von erwarten und async zu bekommen, so habe ich rumgemacht, aber ich bin jetzt ratlos. Ich habe viel gegoogelt, gelesen und recherchiert, aber ich kann das Problem nicht finden.
Also, was ich tue, ist Deserialisieren und zu versuchen, ein Objekt zurück
public static async Task<SomeObject> Deserialize(string filePath)
{
var task = Task.Factory.StartNew(() => LoadFile(filePath));
await task;
return task.Result;
}
Die oben beschriebene Methode dann hier genannt wird:
public async Task DoStuff()
{
var load = await Helper.Deserialize(Helper.filePath);
try
{
Console.WriteLine(load.GetType());
}
catch(Exception e)
{
Console.WriteLine(e);
}
}
Der Rest des Codes ausgeführt wird, bevor die Aufgabe abgeschlossen ist und das Objekt kommt immer als Null heraus und macht es unbrauchbar. Ich weiß, dass ich etwas falsch mache, aber ich kann nicht für mein Leben herausfinden, was es ist, selbst nachdem ich Stunden damit verbracht habe, beantwortete Fragen und die Microsoft-Dokumente zu lesen. Hier
@Fabio ist die Loadfile-Methode:
private static SomeObject LoadFile(string path)
{
JsonSerializer json = new JsonSerializer();
JsonTextReader reader = new JsonTextReader(new StreamReader(path));
var obj = json.Deserialize(reader, typeof(SomeObject));
reader.Close();
return (SomeObject)obj;
}
Refactoring versuchen, die await Aufgabe zu entfernen, anstatt Aufgabe aus der deserialize func zurückzukehren. – Hybridzz
Ich würde vorschlagen, 'LoadFile'' async' zu machen und '' async' 'Versionen der IO-Aufrufe zu erwarten. Was Sie tun, ist wirklich für CPU gebundenen Aufgaben gedacht https://blog.stephencleary.com/2013/11/taskrun-etiquette-examples-using.html – juharr
Können Sie 'LoadFile' Methode zeigen? – Fabio