C# UWP为什么我可以调试.steppover,但不能调试.Run

C# UWP为什么我可以调试.steppover,但不能调试.Run,c#,uwp,async-await,visual-studio-debugging,C#,Uwp,Async Await,Visual Studio Debugging,我有一小段代码,在“普通调试”中只是挂起执行“var folder=…” 异步任务GetAssetFolderAsync() { var folder=wait Windows.ApplicationModel.Package.Current.InstalledLocation.GetFolderAsync(@“资产”); 返回文件夹; } 我放置了两个断点,如 如果我第一次中断,我可以Debug.steppover到“returnfolder”行。如果改用debug.Run,则会消失,不会

我有一小段代码,在“普通调试”中只是挂起执行“var folder=…”

异步任务GetAssetFolderAsync() { var folder=wait Windows.ApplicationModel.Package.Current.InstalledLocation.GetFolderAsync(@“资产”); 返回文件夹; } 我放置了两个断点,如


如果我第一次中断,我可以Debug.steppover到“returnfolder”行。如果改用debug.Run,则会消失,不会到达下一个断点。该方法是从加载的主页面调用的。你知道我该怎么解决这个问题吗。更奇怪的是,它过去工作时没有任何问题,我也没有更改这些行。

我相信你会遇到一个例外,visual studio会默默地为你处理

尝试打开异常设置,并确保它在出现任何异常时停止

  • 调试->窗口->异常设置
  • 标记所有CLR异常
  • 编辑:
    另外,在处理第三方物流时,也要设法抓住这些例外情况。

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

    这里对其进行了更详细的解释:

    我想我不会想到的。它被固定为:

    public async static Task<bool> StaticInitializeAsync()
        {
            recordingsFolder = await getRecordingsFolderAsync();
            AssetsFolder = await Statics.InstallationFolder.GetFolderAsync(@"Assets");
            defaultWavFile = await AssetsFolder.GetFileAsync("Default.wav");
            return true;
        }
    
    public异步静态任务StaticInitializeAsync()
    {
    RecordingFolder=等待GetRecordingFolderAsync();
    AssetFolder=await Statics.InstallationFolder.GetFolderAsync(@“资产”);
    defaultWavFile=await AssetFolder.GetFileAsync(“Default.wav”);
    返回true;
    }
    
    尝试此操作,在任务内的该行上设置断点。当“单步执行”不起作用时,这种方法有效。您必须关注此代码的调用者。如果它没有等待呼叫,那么你就会得到这种行为。和turtles,调用者的调用者必须等待,等等。调试>窗口>调用堆栈和调试>窗口>任务调试器窗口是您的朋友。您是在调试模式还是发布模式下运行代码?感谢在此处共享您的解决方案,您可以将其标记为答案。
    public async static Task<bool> StaticInitializeAsync()
        {
            recordingsFolder = await getRecordingsFolderAsync();
            AssetsFolder = await Statics.InstallationFolder.GetFolderAsync(@"Assets");
            defaultWavFile = await AssetsFolder.GetFileAsync("Default.wav");
            return true;
        }