Json.net posiada funkcje async przekształcania obiektu do JSON jak:Json.net asynchroniczny przy zapisie do pliku
jsn = await JsonConvert.DeserializeObjectAsync<T>
Ale gdy chcę writea obiektu do pliku json wydaje mi się lepiej wykonaj bezpośrednio przy użyciu strumienia plików.
Więc myślę, że powinno być coś takiego:
var fileStream = await file.OpenAsync(FileAccessMode.ReadWrite);
using (IOutputStream outputStream = fileStream.GetOutputStreamAt(0))
{
using (StreamWriter sw = new StreamWriter(fileStream.AsStreamForWrite()))
{
using (JsonWriter jw = new JsonTextWriter(sw))
{
jw.Formatting = Formatting.Indented;
JsonSerializer serializer = new JsonSerializer();
serializer.Serialize(jw, obj);
}
}
Ale na obiekcie JsonSerzializer nie mogę znaleźć metody async. Sądzę również, że operacje IO nie powinny być umieszczane we własnym wątku.
Jakie jest zalecane podejście?
Dzięki za wskazanie, że obecnie. Zastanawiam się już, jak operacja łańcuchowa może być bez wątków asynchron. Przesyłanie strumieniowe może być wykonane jako asynchron. Być może byłaby to funkcja dla Json.net, ale oczywiście nie została jeszcze wprowadzona. Dziękuję za odpowiedź. –
To byłoby proste zadanie do wykonania - tworzenie asynchronicznego rozwidlenia JSON.Net. Problem jednak polega na tym, że zajęłoby to dużo czasu - każdemu udało się zaoszczędzić około 80 godzin? Jeśli nie więcej? – Todd