2017-03-29 54 views
0

我的應用程序在它有機會運行一次之前完全凍結。以下是上下文: 我正在構建一個UWP應用程序,該應用程序將與用戶目錄一起工作,監視其中的文件並將其列入UI控件。我通過創建手動文件夾選擇提示將該目錄添加到futureaccess列表中。我也有一個服務類,它應該給我一個駐留在該目錄中的文件列表。一旦我到達GetFolderFromPathAsync方法,應用程序就會凍結。沒有任何例外或任何類型的錯誤,該應用程序試圖啓動,只是無限期地坐在啓動過程。 在此處,該方法被稱爲類:當我打電話時,應用程序會凍結GetFolderFromPathAsync

public class ReplayDirectoryManager 
{ 
    public async static Task<List<StorageFile>> GetAllReplaysFromReplayDirectory() 
    { 
     string replayDirectoryPath = SettingsServices.SettingsService.Instance.ReplayFolderLocation; 
     StorageFolder replayFolder = await StorageFolder.GetFolderFromPathAsync(replayDirectoryPath); 

     return new List<StorageFile>(await replayFolder.GetFilesAsync()); 
    } 
} 

如何讓我的代碼工作?有什麼建議麼?

下面是我使用的位置添加到列表futureaccess

FolderPicker picker = new FolderPicker(); 
picker.SuggestedStartLocation = PickerLocationId.DocumentsLibrary; 
picker.FileTypeFilter.Add("*"); 
StorageFolder folder = await picker.PickSingleFolderAsync(); 
if (folder != null) 
{ 
    Windows.Storage.AccessCache.StorageApplicationPermissions.FutureAccessList.Add(folder); 
    ReplayFolderLocation = folder.Path; 
} 
+0

您是否嘗試記住'FutureAccessList.Add(文件夾)'返回的令牌,然後通過使用它來獲取* StorageFolder *?通常這是應該如何完成的,不要通過UWP中的路徑訪問文件/文件夾。 – Romasz

+1

該路徑中有多少個文件/文件夾?嘗試一個空文件夾,並告訴我們它是如何去的。 – Rafael

回答

0

當您使用Windows.Storage.AccessCache.StorageApplicationPermissions.FutureAccessList.Add(folder);你可以得到令牌的代碼。

您可以使用保存令牌進行設置。

您可以通過令牌

folder = await StorageApplicationPermissions.FutureAccessList.GetFolderAsync(token); 

@Romasz THX得到的文件夾。

+0

這只是一個評論,試圖給出一個更好的方法,**但是**這不太可能是問題的解決方案 - 在這種情況下,OP應該會看到* AccessException *,但是他的應用程序會凍結。他可能需要提供更多信息。 – Romasz

+0

@Romasz我發現它會凍結,當我用來獲得一個朦朧的道路,我讀取有權訪問,但我沒有用正確的方式來獲取它。 – lindexi

+0

@Romasz他使用FutureAccessList,但沒有保存令牌,他保存的路徑不是官方推薦的方法 – lindexi

相關問題