[英]Async method won't return when called
我对此感到非常糟糕。 我正在尝试创建一个异步方法,将本地文件的内容作为字符串返回。 这是我的方法:
private static async Task<string> ReadContentsAsString(string fileName)
{
var uri = new Uri(string.Format(@"ms-appx:///{0}", fileName));
var file = await StorageFile.GetFileFromApplicationUriAsync(uri).AsTask().ConfigureAwait(false);
var stream = await file.OpenStreamForReadAsync().ConfigureAwait(false);
using (var streamReader = new StreamReader(stream))
{
return await streamReader.ReadToEndAsync();
}
}
不幸的是,在执行到达我的方法结束后,应用程序将永远等待。 它完全挂起。 一开始就调用它,当时启动画面仍然显示(Windows Phone 8.1)
我错过了什么?
你的方法正常运作。 我怀疑你在调试时遇到了这个问题。
我也注意到(有时)调试asyc方法时的这种行为( 这里是问题的链接 ) - 程序永远不会从方法返回而只是挂起 - 我不知道确切的原因。 要测试它只是尝试像这样运行你的方法 - 例如按下按钮:
private async void firstBtn_Click(object sender, RoutedEventArgs e)
{
Debug.WriteLine("Before method");
string readValue = await ReadContentsAsString("TextFile1.txt");
Debug.WriteLine(string.Format("Read value: {0}", readValue));
}
正如我在设备上测试过 - 它应该可以工作,但如果我在你的方法中设置一个断点 - 它会挂起。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.