UWP 应用程序关闭时如何处理?
How do I handle when a UWP application is closing?
有时我有一个打开的流或一个活动的队列,必须在应用程序关闭时正确处理。在 WPF 应用程序中,我可以在应用程序上使用 Unloading 事件,但在 UWP 中我注意到这样的事件不存在。
我如何可靠地做到这一点?
PS: 我正在使用 Template 10 框架。
在通用 UWP 应用程序中,了解应用程序正在关闭的唯一可靠方法是附加到应用程序中的 Suspending 事件 class。为了有效地做到这一点,您需要处理事件并将此操作以某种方式发送到您的视图模型中,您可以在其中关闭您的流或清除您的队列。
public App()
{
this.InitializeComponent();
this.Suspending += App_Suspending;
}
private void App_Suspending(Object sender, SuspendingEventArgs e)
{
// close stream
}
在 Template 10 应用程序中,执行此操作的最佳方法是覆盖视图模型中的 OnNavigatedFrom 方法并查看暂停参数是否为真。如果是,那么您的应用程序正在关闭,现在是关闭您的流或清除您的队列的适当时间。不要乱用应用程序 class。
public override Task OnNavigatedFromAsync(IDictionary<String, Object> pageState, Boolean suspending)
{
if (suspending)
{
// close stream
}
return base.OnNavigatedFromAsync(pageState, suspending);
}
或者,如果您使用不带视图模型的模板 10(100% 支持),则模板 10 应用程序 class 提供覆盖而不是要处理的事件。覆盖此方法并在那里关闭您的流。
public override Task OnSuspendingAsync(Object s, SuspendingEventArgs e, Boolean prelaunchActivated)
{
// close stream
return base.OnSuspendingAsync(s, e, prelaunchActivated);
}
祝你好运。
有时我有一个打开的流或一个活动的队列,必须在应用程序关闭时正确处理。在 WPF 应用程序中,我可以在应用程序上使用 Unloading 事件,但在 UWP 中我注意到这样的事件不存在。
我如何可靠地做到这一点?
PS: 我正在使用 Template 10 框架。
在通用 UWP 应用程序中,了解应用程序正在关闭的唯一可靠方法是附加到应用程序中的 Suspending 事件 class。为了有效地做到这一点,您需要处理事件并将此操作以某种方式发送到您的视图模型中,您可以在其中关闭您的流或清除您的队列。
public App()
{
this.InitializeComponent();
this.Suspending += App_Suspending;
}
private void App_Suspending(Object sender, SuspendingEventArgs e)
{
// close stream
}
在 Template 10 应用程序中,执行此操作的最佳方法是覆盖视图模型中的 OnNavigatedFrom 方法并查看暂停参数是否为真。如果是,那么您的应用程序正在关闭,现在是关闭您的流或清除您的队列的适当时间。不要乱用应用程序 class。
public override Task OnNavigatedFromAsync(IDictionary<String, Object> pageState, Boolean suspending)
{
if (suspending)
{
// close stream
}
return base.OnNavigatedFromAsync(pageState, suspending);
}
或者,如果您使用不带视图模型的模板 10(100% 支持),则模板 10 应用程序 class 提供覆盖而不是要处理的事件。覆盖此方法并在那里关闭您的流。
public override Task OnSuspendingAsync(Object s, SuspendingEventArgs e, Boolean prelaunchActivated)
{
// close stream
return base.OnSuspendingAsync(s, e, prelaunchActivated);
}
祝你好运。