无法读取metro应用中的文本文件?

时间:2012-05-09 08:20:59

标签: c# windows-8 windows-runtime

我可以第一次阅读文本文件。当我下次尝试读取相同的文本文件时,它退出该函数并返回空值。

    static string configData = "";
    async public void readtextFile(string folder, string file)
    {
        StorageFolder storageFolder = await Package.Current.InstalledLocation.GetFolderAsync(folder);
        StorageFile storageFile = await storageFolder.GetFileAsync(file);
        configData = await FileIO.ReadTextAsync(storageFile);
    }

请建议我,如何解决此问题..

由于 SheikAbdullah

1 个答案:

答案 0 :(得分:4)

不要忘记readtextFile是一种异步方法。当您调用它时,它实际上会在到达第一个await时返回,因此此时configData尚未设置。您应该从方法返回值,并等待方法:

async public Task<string> readtextFile(string folder, string file)
{
    StorageFolder storageFolder = await Package.Current.InstalledLocation.GetFolderAsync(folder);
    StorageFile storageFile = await storageFolder.GetFileAsync(file);
    string configData = await FileIO.ReadTextAsync(storageFile);
    return configData;
}

...

string configData = await readTextFile(folder, file);

即使您想在字段中存储configData,在阅读该值之前仍需await readtextFile