我正在尝试使用StreamReader在Windows 8 C#文件中逐行读取一个简单的文本文件。我尝试了很多解决方案,但没有解决方案。有时文件被读取,有时它不被读取(类是空的,只有空值)。如果程序运行它永远不会工作,但是当我设置一个调试器并使用它逐行时,它有效。这是为什么?这是来源:
public async void read(string fileName)
{
string File = Path.Combine(Package.Current.InstalledLocation.Path, "myfolder", fileName);
StorageFolder folder = await StorageFolder.GetFolderFromPathAsync(Path.GetDirectoryName(File));
Stream s = await folder.OpenStreamForReadAsync(Path.GetFileName(File));
StreamReader streamReader = new StreamReader(s);
myClass.name = streamReader.ReadLine();
myClass.desc = streamReader.ReadLine();
myClass.number = int.Parse(streamReader.ReadLine());
myClass.house = new House[myClass.number];
for (int i = 0; i < myClass.number; i++)
{
myClass.house[i] = new House();
myClass.house[i].name = streamReader.ReadLine();
myClass.house[i].size = double.Parse(streamReader.ReadLine());
}
}
答案 0 :(得分:0)
如果函数是事件处理程序(例如按下按钮),则只应使用async void
。通常,您应该使用async Task
代替。
将您的方法签名从void
更改为Task
:
public async Task read(string fileName)
然后从您的调用代码中await
:
await yourclass.read("c:\\my_filename.txt");