我已经隔离了以下代码,它在OnNavigatedTo事件中起作用,所以我知道代码可以工作。但是,我无法在那里使用它。我需要在Suspending事件中使用它。但它不会在那里工作。当我设置断点时,它们不会在此事件中的任何地方被击中。也没有编译时或运行时错误。
发生了什么事?
async void App_Suspending(
Object sender,
Windows.ApplicationModel.SuspendingEventArgs e)
{
IReadOnlyList<StorageFile> thefiles;
var localFolder = Windows.Storage.ApplicationData.Current.LocalFolder;
Windows.Globalization.DateTimeFormatting.DateTimeFormatter formatter = new Windows.Globalization.DateTimeFormatting.DateTimeFormatter("longtime");
thefiles = await localFolder.GetFilesAsync();
foreach (var f in thefiles)
{
await f.DeleteAsync(StorageDeleteOption.Default);
}
}
答案 0 :(得分:3)
我的猜测是,当你等待这个方法时,app会退出Suspending方法,并以这种方式授予操作系统杀死进程的权限。您可以通过在第一次等待(在foreach上)之后放置一个断点并检查它是否到达来测试这一点。
答案 1 :(得分:0)
我找到了解决方案。它涉及检查用户是否关闭了应用程序。如果是这样,那么(在我的情况下,无论如何)可以删除这些临时文件。您可以在OnLaunched方法中的App.xaml.cs文件中执行此操作:
if (args.PreviousExecutionState == ApplicationExecutionState.ClosedByUser)
{
IReadOnlyList<StorageFile> thefiles;
var localFolder = Windows.Storage.ApplicationData.Current.LocalFolder;
Windows.Globalization.DateTimeFormatting.DateTimeFormatter formatter = new Windows.Globalization.DateTimeFormatting.DateTimeFormatter("longtime");
thefiles = await localFolder.GetFilesAsync();
foreach (var f in thefiles)
{
await f.DeleteAsync(StorageDeleteOption.Default);
}
}