[英]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.