C# GetFileFromApplicationUriAsync似乎永远挂起
我试图从一个文件中读取数据,而GetFileFromApplicationUriAsync,大多数时候永远挂起,你知道为什么会这样吗。我正在模拟器上调试应用程序 几点注意:C# GetFileFromApplicationUriAsync似乎永远挂起,c#,windows-8,windows-runtime,microsoft-metro,windows-store-apps,C#,Windows 8,Windows Runtime,Microsoft Metro,Windows Store Apps,我试图从一个文件中读取数据,而GetFileFromApplicationUriAsync,大多数时候永远挂起,你知道为什么会这样吗。我正在模拟器上调试应用程序 几点注意: BaseLocalFolder = "ms-appdata:///local/"; Uri baseUri = new Uri(BaseLocalFolder); Uri cardsUri = new Uri(baseUri, Path.Combine(set,"cards.ccc")); StorageFile file
BaseLocalFolder = "ms-appdata:///local/";
Uri baseUri = new Uri(BaseLocalFolder);
Uri cardsUri = new Uri(baseUri, Path.Combine(set,"cards.ccc"));
StorageFile file = await StorageFile.GetFileFromApplicationUriAsync(cardsUri);
using (IInputStream stream = await file.OpenSequentialReadAsync())
{
using (StreamReader rdr = new StreamReader(stream.AsStreamForRead()))
{
var cardArray = Windows.Data.Json.JsonArray.Parse(rdr.ReadToEnd());
foreach (Tables.Card card in cardArray.ToCards())
{
_cards.Add(card.ToCardViewModel());
}
}
}
更新:
在我根据建议修改代码之后,我开始对ReadTextAsync()产生同样的问题,一旦它到达那一行,它就永远停留在那里,我永远不会得到字符串
StorageFile file = await Windows.Storage.ApplicationData.Current.LocalFolder.GetFileAsync(Path.Combine(set, "cards.ccc"));
try
{
string allCards = await Windows.Storage.FileIO.ReadTextAsync(file);
var cardArray = Windows.Data.Json.JsonArray.Parse(allCards);
foreach (Tables.Card card in cardArray.ToCards())
{
_cards.Add(card.ToCardViewModel());
}
}
catch (FileNotFoundException err)
{
string s = "";
}
Path.Combine(set,“cards.ccc”)
中的set
的值是多少?您有没有调用Wait
或Result
进一步调用堆栈?@Xyroid该值可以是许多值中的一个,例如:“黑钢”、“联盟”。Stephen,如果我理解了你的问题,这段代码被包装在一个异步方法中,我会等待,除了你看到的,在这个方法上没有其他代码。代码一直执行,直到它到达GetFileFromApplicationUriAsync,并永远停留在那里,我昨晚离开了,它再也没有通过。您在变量文件中得到任何值吗?您是否尝试使用Windows.Storage.ApplicationData.Current.LocalFolder.GetFolderAsync(…)
和Windows.Storage.ApplicationData.Current.LocalFolder.GetFileAsync(…)
而不是StorageFile.GetFileFromApplicationUriAsync(…)
?cards.ccc接缝是JSON文件,对吗?要读取cards.ccc,请尝试Windows.Storage.FileIO.ReadTextAsync(…)
@Xyroid我做了您建议的更改,现在它已交给ReadTextAsync,文件大约为300K,因此读取时间应该不会太长。