2014-12-06 123 views
0

在Windows Store應用程序/ Windows Phone應用程序中,是否有任何方式獲取與C++或c#同步的文件/目錄列表?所有示例都是異步的。WinRT - 獲取文件和目錄列表

+2

你爲什麼要同步?在50毫秒以下的任何延遲都會導致應用失敗AFAIK認證。 – 2014-12-06 18:46:24

+0

延遲而不是下我猜你的意思是 – 2014-12-06 19:53:27

+0

OPS,我的壞!是 - OVER :) – 2014-12-07 17:51:14

回答

0

Sollution工作對我來說:How would I run an async Task<T> method synchronously?

var task = Task.Run(async() => { await ... }); 
    task.Wait(); 

樣品從這篇文章也工作正常。 http://mtaulty.com/CommunityServer/blogs/mike_taultys_blog/archive/2013/02/22/windows-8-winrt-storagefolder-hidden-files-net-c-appcontainers-brokering.aspx

p.s. 我忘了提及,我需要同步閱讀我的c + +遊戲文件列表,而不是應用程序。我從iphone/android移植現有的代碼,所以有一些依賴函數結果的地方。

0

在大多數情況下,您會希望異步執行此操作。當應用程序UI掛起時,用戶不喜歡它,並且await系統嘗試儘可能平滑地進行異步編程,因此您不必執行大量的自定義代碼即可保持應用程序的響應。

這就是說,對於這不太可能對響應一個顯著的影響,你可以去同步的情況:

如果文件在安裝或應用程序數據文件夾,然後應用程序可以使用標準的C訪問這些++文件API。該應用程序將無權執行此操作,並需要使用異步StorageItem API(StorageFolders和StorageFiles)

如果應用程序正在從後臺線程調用StorageItem,則它可以同步等待異步選項來完成。該應用程序不能以這種方式阻止UI線程:Task.Wait將在UI線程中失敗。從這個問題

var thread = myFolder.GetFilesAsync().AsTask(); 
thread.Wait(); 
相關問題