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

Я могу прочитать текстовый файл в первый раз. когда я пытаюсь прочитать тот же текстовый файл в следующий раз, он выходит из функции и возвращает нулевое значение.

    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