我正在尝试为我的UPW应用打开一个.txt文件。
string text;
private async void OpenFile(string fileName)
{
StorageFolder localFolder = await ApplicationData.Current.LocalFolder.GetFolderAsync("Beginner");
try
{
StorageFile file = await localFolder.GetFileAsync(fileName + ".txt");
text = await FileIO.ReadTextAsync(file);
PrintMessage(text);
}
catch (Exception)
{
PrintMessage("Failed to load file");
}
}
public async void PrintMessage(string message)
{
//Writes message
MessageDialog msg = new MessageDialog(message);
await msg.ShowAsync();
}
public Main()
{
OpenFile("WordList");
PrintMessage(text);
}
PrintMessage(text);
之后ReadTextAsync
时,代码运行正常。当我删除它时,程序将在大多数时间冻结。当我在调试器中运行它时,它主要完成,但有时它会在行StorageFile file = await localFolder.GetFileAsync(fileName + ".txt");
处冻结。我相信异步魔法存在一些问题。
此外,text
中的Main()
变量几乎总是 null,即使它应包含文件的文本。
我需要的只是一个能够可靠地打开.txt文件并返回该文件的内容的函数(返回返回,或者像这样返回全局)。我尝试使用Task<>
,但我无法让它工作......
编辑: 我试过了
string text { get; set; }
public async void OpenFileAssist(string fileName)
{
await OpenFile(fileName);
}
public async Task OpenFile(string fileName)
{
StorageFolder localFolder = await Windows.Storage.ApplicationData.Current.LocalFolder.GetFolderAsync("Beginner");
try
{
StorageFile file = await localFolder.GetFileAsync(fileName + ".txt");
text = await FileIO.ReadTextAsync(file);
}
catch (Exception)
{
PrintMessage("File does not exist");
}
}
但它仍然不起作用......当我从Main()调用OpenFileAssist()时,文本变量仍为null。 :(如果我在调试器中打开它并一步一步地运行它,但是。
我使用
获得了解决方案 private async void Page_Loaded(object sender, RoutedEventArgs e)