在UWP中,我正在使用WriteTextAsync写入文件(20K ascii文本文件),然后使用ReadTextAsync读取同一文件。 当我使用断点运行时,逐步执行ReadRawTextFromFile,它可以正常工作。 当我正常运行时(没有断点),我从ReadTextAsync得到了一个空返回。 我没有任何例外。 我该怎么办才能读取文件。
// This is for writing the RawText
private async void WriteRawTextToFile(string fname, string textToWrite)
{
try
{
StorageFolder localFolder = ApplicationData.Current.LocalFolder;
StorageFile localFile = await localFolder.CreateFileAsync(fname, CreationCollisionOption.ReplaceExisting);
await FileIO.WriteTextAsync(localFile, textToWrite);
}
catch(Exception e)
{
Console.WriteLine($"WriteRawTextToFile Exception: '{e}'");
}
}
private string TextFromFile; // to get back from the file read
private async void ReadRawTextFromFile(string fname, string defaultString)
{
try
{
StorageFolder localFolder = ApplicationData.Current.LocalFolder;
StorageFile localFile = await localFolder.GetFileAsync(fname);
TextFromFile = await FileIO.ReadTextAsync(localFile); // get Text from the file
}
catch (Exception e)
{
Console.WriteLine("Exception: " + e.ToString());
TextFromFile = defaultString;
}
}
答案 0 :(得分:1)
试图解释@HenkHolterman在评论中的含义,
没有返回类型(void)的 async
和async Task
不能很好地配合Exception和throwable,它们仅适用于异步事件侦听器,而不适用于{{1 }}或async Task<T>
,它们具有返回类型,如果有任何异常,则该异常将通过返回类型传递给调用方。您也可以参考here来了解有关异步和等待的最佳做法
我的建议是
async T
方法具有返回类型,例如async
或bool
,以指示该方法是否成功完成了自己的工作Task<bool>
的{{1}}无法输出错误等,请尝试使用{{1 }}命名空间。这可能是您真正的问题,也可能不是您的真正问题,即没有异常打印到输出窗口还试图解释@MichaelRandal的意思(也来自评论)
如果我可以在评论中引用断点,那么您已经做出了“非常大的要求”,因此,我们希望您详细说明,例如提供更多信息,例如堆栈输出,断点输出和这样,因此任何想要回答或贡献的人都不必继续要求提供所需的信息