3
有時我有一個打開的流或活動隊列,當應用程序關閉時必須正確處理。在WPF應用程序中,我可以在應用程序中使用Unloading事件,但在UWP中,我注意到這樣的事件不存在。如何在UWP應用程序關閉時處理?
我該如何可靠地做到這一點?
PS:我正在使用模板10框架。
有時我有一個打開的流或活動隊列,當應用程序關閉時必須正確處理。在WPF應用程序中,我可以在應用程序中使用Unloading事件,但在UWP中,我注意到這樣的事件不存在。如何在UWP應用程序關閉時處理?
我該如何可靠地做到這一點?
PS:我正在使用模板10框架。
在通用的UWP應用程序中,知道應用程序正在關閉的唯一可靠方法是附加到應用程序類中的Suspending事件。爲了有效地做到這一點,您需要處理事件並以某種方式將此操作發送到視圖模型中,您可以關閉流或清除隊列。
public App()
{
this.InitializeComponent();
this.Suspending += App_Suspending;
}
private void App_Suspending(Object sender, SuspendingEventArgs e)
{
// close stream
}
在模板10的應用程序做到這一點的最好辦法是重寫您的視圖模型的OnNavigatedFrom方法看,如果懸浮的說法是真實的。如果是,那麼你的應用程序正在關閉,這是合適的時間來關閉你的流或清除你的隊列。不要亂用應用程序類。或者,如果您使用的模板10沒有視圖模型(100%支持),則模板10應用程序類提供覆蓋而不是要處理的事件。覆蓋此方法並關閉您的流。
public override Task OnSuspendingAsync(Object s, SuspendingEventArgs e, Boolean prelaunchActivated)
{
// close stream
return base.OnSuspendingAsync(s, e, prelaunchActivated);
}
祝你好運。
暫停!=正在關閉 – lindexi
@lindexi - 我認爲第一句解決了這個問題。對於開發人員來說,與UWP相比差距很小。 –
@lindexi即使你是對的,你也可能是錯的。當您的應用程序暫停時,會引發暫停事件。當你的應用程序關閉時,引發暫停事件。沒有可靠的區分方法。因此,您必須像關閉一樣處理暫停。 –