我能够实现在例子中的功能,但我真正想要的是读取和写入到一个XML文件。
我跟着一个通常的C#程序读取和写入xml文件,但得到错误的方法是异步。
我从来没有使用异步等待方法,所以不知道如何去做。
这里是我的尝试:
public async Task SaveTextAsync(string filename, string text)
{
ApplicationData data = new ApplicationData();
ApplicationVersion version = new ApplicationVersion();
version.SoftwareVersion = "test";
data.ApplicationVersion = version;
XmlSerializer writer =
new XmlSerializer(typeof(ApplicationData));
System.IO.FileStream file = System.IO.File.Create(path);
writer.Serialize(file, data);
file.Close();
}
public async Task LoadTextAsync(string filename)
{
var path = CreatePathToFile(filename);
ApplicationData cars = null;
XmlSerializer serializer = new XmlSerializer(typeof(ApplicationData));
StreamReader reader = new StreamReader(path);
cars = (ApplicationData)serializer.Deserialize(reader);
reader.Close();
}
string CreatePathToFile(string filename)
{
var docsPath = System.Environment.GetFolderPath(System.Environment.SpecialFolder.Personal);
return Path.Combine(docsPath, filename);
}
编辑
工作读取和写入txt文件的代码是在这里:
public async Task SaveTextAsync (string filename, string text)
{
var path = CreatePathToFile (filename);
using (StreamWriter sw = File.CreateText (path))
await sw.WriteAsync(text);
}
public async Task LoadTextAsync (string filename)
{
var path = CreatePathToFile (filename);
using (StreamReader sr = File.OpenText(path))
return await sr.ReadToEndAsync();
}
2016-03-03
Arti
+0
确切的错误,你会得到? –
+0
第一种方法(SaveTextAsync)不会给出任何错误,但第二种方法(LoadTextAsync)会发生。 '错误“LoadTextAsync(串)”:并非所有的代码路径返回value' –
+0
看起来你有你在哪里读/写流和读/写文件的双端口的应用程序。通常,代码的异步部分将在流中,而不是文件。 –