Получение данных из файла в приложении Магазина Windows 8

Я создал приложение, в котором я успешно записал детали в файл. Но при доступе к файлу из приложения я получаю следующее исключение:

введите описание изображения здесь

Следующее - мой класс:

public class UserDetails
{
    public string Name { get; set; }
    public string Course { get; set; }
    public string City { get; set; }
}

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

private async void btnSearch_Click(object sender, RoutedEventArgs e)
    {
        details.Name = TxtName.Text;
        details.Course = TxtCouse.Text;
        details.City = TxtCity.Text;
        await SaveAsync();
        this.Frame.Navigate(typeof(string));
    }

    private async Task SaveAsync()
    {
        StorageFolder localfolder = await ApplicationData.Current.LocalFolder.CreateFolderAsync("Storage Application", CreationCollisionOption.OpenIfExists);
        StorageFile sampleFile = await localfolder.CreateFileAsync("UserDetails", CreationCollisionOption.ReplaceExisting);
        IRandomAccessStream stream = await sampleFile.OpenAsync(FileAccessMode.ReadWrite);
        using(IOutputStream outstream = stream.GetOutputStreamAt(0))
        {
            DataContractSerializer serializer = new DataContractSerializer(typeof(UserDetails));
            serializer.WriteObject(outstream.AsStreamForWrite(), details);
            await outstream.FlushAsync();
        }
        await RestoreDataAsync();
    }

    private async Task RestoreDataAsync()
    {
        StorageFolder localfolder = await ApplicationData.Current.LocalFolder.GetFolderAsync("Storage Application");
        StorageFile sampleFile = await localfolder.GetFileAsync("UserDetails");
        IRandomAccessStream inStream = await sampleFile.OpenAsync(FileAccessMode.Read);
        DataContractSerializer serializer = new DataContractSerializer(typeof(UserDetails));
        var Details = (UserDetails)serializer.ReadObject(inStream.AsStreamForRead());
        inStream.Dispose();
        TblName.Text = details.Name;
        TblCourse.Text = details.Course;
        TblCity.Text = details.City;
    }

Я новичок в создании приложений для Магазина Windows.

1 ответ

Проблема заключается в вашем методе SaveAsync(). Вы открыли StorageFile файла sampleFile, но не удалили его. Попробуй добавить sampleFile.Dispose(); после того, как вы использовали это.

Другие вопросы по тегам