逐行读取StreamReader文件

时间:2013-03-23 14:33:45

标签: c# windows-8 windows-runtime streamreader

我正在尝试使用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());
        }  
    }

1 个答案:

答案 0 :(得分:0)

如果函数是事件处理程序(例如按下按钮),则只应使用async void。通常,您应该使用async Task代替。

将您的方法签名从void更改为Task

public async Task read(string fileName)

然后从您的调用代码中await

await yourclass.read("c:\\my_filename.txt");