C# UWP为什么我可以调试.steppover,但不能调试.Run
我有一小段代码,在“普通调试”中只是挂起执行“var folder=…” 异步任务GetAssetFolderAsync() { var folder=wait Windows.ApplicationModel.Package.Current.InstalledLocation.GetFolderAsync(@“资产”); 返回文件夹; } 我放置了两个断点,如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,则会消失,不会
如果我第一次中断,我可以Debug.steppover到“returnfolder”行。如果改用debug.Run,则会消失,不会到达下一个断点。该方法是从加载的主页面调用的。你知道我该怎么解决这个问题吗。更奇怪的是,它过去工作时没有任何问题,我也没有更改这些行。我相信你会遇到一个例外,visual studio会默默地为你处理 尝试打开异常设置,并确保它在出现任何异常时停止
另外,在处理第三方物流时,也要设法抓住这些例外情况。经过长时间的搜索,我从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;
}