public Task <RegistryStorageFolder> RegistryAsync(StorageFolder folder)
        {
            return(Task.Run(() =>
            {
                lock (_registryStorageFolders)
                {
                    if (_registryStorageFolders.Count ==
                        StorageApplicationPermissions.FutureAccessList.MaximumItemsAllowed)
                    {
                        throw new FullRecordRegistryStorageFolderException(
                            $"Maximum items allowed {StorageApplicationPermissions.FutureAccessList.MaximumItemsAllowed}");
                    }

                    RegistryStorageFolder registryStorageFolder = null;
                    if (_registryStorageFolders.TryGetValue(folder.Path, out var oldfolder))
                    {
                        StorageApplicationPermissions.FutureAccessList.AddOrReplace(oldfolder.Token, folder);
                        registryStorageFolder = new RegistryStorageFolder(oldfolder.Token, this);
                    }
                    else
                    {
                        string token = StorageApplicationPermissions.FutureAccessList.Add(folder);
                        registryStorageFolder = new RegistryStorageFolder(token, this);
                    }

                    _registryStorageFolders[folder.Path] = registryStorageFolder;
                    return registryStorageFolder;
                }
            }));
        }
        private async Task <RegistryStorageFolderService> InitializeAsync()
        {
            foreach (var accessListEntry in StorageApplicationPermissions.FutureAccessList.Entries)
            {
                string token = accessListEntry.Token;
                RegistryStorageFolder registryStorageFolder = new RegistryStorageFolder(token, this);
                StorageFolder         storageFolder         = await registryStorageFolder.GetStorageFolderAsync();

                this._registryStorageFolders[storageFolder.Path] = registryStorageFolder;
            }

            return(this);
        }
 public async Task <StorageFolder> GetStorageFolderTask(RegistryStorageFolder registryStorageFolder)
 {
     return(await StorageApplicationPermissions.FutureAccessList.GetFolderAsync(registryStorageFolder.Token));;
 }