0

次のコードを分離しました。これは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);
            }
        }
4

2 に答える 2

3

私の推測では、このメソッドで待機すると、アプリはSuspendingメソッドを終了し、このようにしてOSにプロセスを強制終了する権限を与えます。これをテストするには、最初の待機(foreach)の後にブレークポイントを設定し、それに到達したかどうかを確認します。

于 2013-01-17T12:09:36.727 に答える
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);
                }
            }
于 2013-01-17T13:28:47.037 に答える