Не можете да прочетете текстовия файл в метро приложенията?

Мога да прочета текстовия файл за първи път. когато се опитам да прочета същия текстов файл следващия път, той излиза от функцията и връща нулева стойност.

    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);
    }

Моля, предложете ми как да разреша този проблем..

Благодаря Шейк Абдула


person SheikAbdullah    schedule 09.05.2012    source източник


Отговори (1)


Не забравяйте, че 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, преди да прочетете стойността.

person Thomas Levesque    schedule 09.05.2012