0

我正在开发我的第一个 Windows8 应用程序 (XAML+C#),我正在从 ApplicationData.Current.LocalFolder 读取一个文本文件 - 我正在使用下面的代码片段来获取数据,但它没有读取任何内容,即使数据存在于磁盘上的文件:

在 ReadTextAsync 调用行之后,我尝试调试此代码 - 没有任何反应。

private static async Task<string> ReadData()
{
    try
    {
        // checking whether file exists on the disk or not
        if (IsFileExistAsync("general.txt").Result) 
        {
            string fileContents = await PathIO.ReadTextAsync("general.txt");

            if (!string.IsNullOrEmpty(fileContents))
            {
                return fileContents;
            }
        }
        else
        {
            return string.empty;
        }
     }
    catch (Exception)
    {
    }

            return string.empty;
}
4

1 回答 1

0

我看到您(错误地)在该代码段中使用Result而不是。await

我怀疑您还Result进一步使用了调用堆栈,这将导致这种死锁行为。我有一篇文详细介绍了为什么会发生这种死锁。

Task<T>.Result要修复它,请删除对and的所有调用Task.Wait,将它们替换为await表达式。

于 2013-11-14T02:01:45.287 回答