オープンストリームまたはアプリケーションが終了するときに適切に処理されるアクティブなキューがあることがあります。 WPFアプリケーションでは、アプリケーションでUnloadingイベントを使用できますが、UWPではそのようなイベントは存在しません。UWPアプリケーションが終了したときの処理方法を教えてください。
これを確実に行うにはどうすればよいですか?
PS:私はTemplate 10フレームワークを使用しています。
オープンストリームまたはアプリケーションが終了するときに適切に処理されるアクティブなキューがあることがあります。 WPFアプリケーションでは、アプリケーションでUnloadingイベントを使用できますが、UWPではそのようなイベントは存在しません。UWPアプリケーションが終了したときの処理方法を教えてください。
これを確実に行うにはどうすればよいですか?
PS:私はTemplate 10フレームワークを使用しています。
一般的なUWPアプリケーションでは、アプリケーションが終了することを知る唯一の信頼できる方法は、アプリケーションクラスのSuspendingイベントにアタッチすることです。これを効果的に行うには、イベントを処理し、ストリームを閉じたりキューをクリアしたりできるビューモデルに何らかの方法でこの操作をメッセージする必要があります。
public App()
{
this.InitializeComponent();
this.Suspending += App_Suspending;
}
private void App_Suspending(Object sender, SuspendingEventArgs e)
{
// close stream
}
テンプレート10のアプリケーションでこれを行うための最善の方法は、あなたのビューモデルにOnNavigatedFromメソッドをオーバーライドして、吊り引数がtrueの場合は見ています。そうであれば、アプリケーションは終了しています。ストリームを閉じるか、キューをクリアするのが適切な時期です。アプリケーションクラスを混乱させないでください。
public override Task OnNavigatedFromAsync(IDictionary<String, Object> pageState, Boolean suspending)
{
if (suspending)
{
// close stream
}
return base.OnNavigatedFromAsync(pageState, suspending);
}
あなたが100%サポートされているビュー・モデル、なしテンプレート10を使用している場合、あるいは、テンプレート10アプリケーションクラスではなく、処理するイベントのオーバーライドを提供します。このメソッドをオーバーライドし、そこでストリームを閉じます。
public override Task OnSuspendingAsync(Object s, SuspendingEventArgs e, Boolean prelaunchActivated)
{
// close stream
return base.OnSuspendingAsync(s, e, prelaunchActivated);
}
最高の運があります。
中断中!=閉じる – lindexi
@lindexi - 私は最初の文章がそれに対応すると思います。開発者にとっては、UWPとの違いはかなり薄いです。 –
@lindexiあなたが正しいとはいえ、間違っている可能性もあります。アプリケーションが中断されると、Suspendingイベントが発生します。アプリケーションが閉じられると、Suspendingイベントが発生します。差別化のための信頼できる方法はありません。その結果、[停止中]のように[停止中]を処理する必要があります。 –