【发布时间】:2020-01-08 20:25:58
【问题描述】:
我目前使用这个函数写入文件:
StorageFolder storageFolder = ApplicationData.Current.LocalFolder;
StorageFile sampleFile = await storageFolder.GetFileAsync("test.txt");
WriteToFile<List<Class>>(classesArray, sampleFile);
public static async void WriteToFile<T>(T objectToWrite, StorageFile file) where T : new()
{
TextWriter writer = null;
try
{
var serializer = new XmlSerializer(typeof(T));
var stream = await file.OpenStreamForWriteAsync();
writer = new StreamWriter(stream);
serializer.Serialize(writer, objectToWrite);
}
finally
{
if (writer != null)
writer.Close();
}
}
所以我认为我可以这样做来读取同一个文件:
StorageFolder storageFolder = ApplicationData.Current.LocalFolder;
StorageFile sampleFile = await storageFolder.GetFileAsync("test.txt");
classesArray = ReadFromFile(sampleFile);
public static async T ReadFromFile<T>(StorageFile file) where T : new()
{
TextReader reader = null;
try
{
var serializer = new XmlSerializer(typeof(T));
var stream = await file.OpenStreamForReadAsync();
reader = new StreamReader(stream);
return (T)serializer.Deserialize(reader);
}
finally
{
if (reader != null)
reader.Close();
}
}
但它说“异步方法的返回类型必须是 void、Task、Task、类似任务的类型、IAsyncEnumerable 或 IAsyncEnumerator”
我认为有一个简单的解决方案,但我对 c# 和 UWP 比较陌生,所以没有任何线索。
【问题讨论】:
-
与The return type of an async method must be void, Task or Task<T> in C# 几乎相同。请注意,这并不是真正的 Windows.Storage 问题。这是一个 C# 语言问题。
标签: c# asynchronous uwp