UWP为什么我可以debug.StepOver,但不能调试Debug.Run

时间:2017-05-05 14:32:23

标签: c# uwp async-await visual-studio-debugging

我有一些代码正常调试'只是挂起执行" var folder = ..."

async Task<StorageFolder> GetAssetsFolderAsync()
    {
        var folder = await Windows.ApplicationModel.Package.Current.InstalledLocation.GetFolderAsync(@"Assets");
        return folder;
    }

我在...中放置了两个断点

GetFolderAsync

如果我在第一个中断,我可以Debug.StepOver到第&#34;返回文件夹&#34;。如果我使用debug.Run而不去,并且没有点击下一个断点。从MainPage_Loaded调用该方法。知道如何纠正这个问题。而且我们的工作很简单,以至于它曾经没有问题地工作过,而且我还没有改变这些线路。很多其他的线路。

2 个答案:

答案 0 :(得分:1)

经过长时间的长时间搜索后,我找到了Skeet先生和Cleary先生的答案。我阻止了UI线程。

这里有更详细的解释:

Call to await GetFileAsync() never returns and app hangs in WinRT app

我不认为我会想到它。它修复了:

public async static Task<bool> StaticInitializeAsync()
    {
        recordingsFolder = await getRecordingsFolderAsync();
        AssetsFolder = await Statics.InstallationFolder.GetFolderAsync(@"Assets");
        defaultWavFile = await AssetsFolder.GetFileAsync("Default.wav");
        return true;
    }

答案 1 :(得分:0)

我相信你会得到视觉工作室默默处理的异常。

尝试打开例外设置并确保它对任何异常进行制动。

  1. 调试 - &gt; Windows - &gt;例外设置
  2. 标记所有CLR例外
  3. 编辑: 同时尝试捕获AggregateException,这些可以在处理TPL时包装真正的异常。