1

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

1 回答 1

0

async void当函数是事件处理程序(例如按钮按下)时才应使用。通常,您应该async Task改用。

将您的方法签名从更改voidTask

public async Task read(string fileName)

然后从您的调用代码中,await它:

await yourclass.read("c:\\my_filename.txt");
于 2013-03-23T14:52:39.640 回答