gpt4 book ai didi

.net - Windows Phone 8 应用程序生命周期事件和异步/等待

转载 作者:行者123 更新时间:2023-12-03 04:04:23 26 4
gpt4 key购买 nike

当应用程序进入后台然后恢复时,await-ed 任务会发生什么?假设当收到有关应用程序挂起的事件时,任务没有被取消。从逻辑删除状态恢复和仅从后台恢复有什么区别吗?

如果没有直接答案,即这取决于提供异步 API 的服务的实现,那么在这种情况下要遵循的最佳实践是什么?

最佳答案

当应用程序进入后台时,所有应用程序的线程都会被卡住。因此,一旦应用程序被激活,任务就会恢复。

例如,让我们运行以下代码片段:

    private async void MainPage_Loaded(object sender, RoutedEventArgs e)
{
Debug.WriteLine("I've started");
await Task.Delay(TimeSpan.FromSeconds(5));
Debug.WriteLine("I'm done");
}

private void Application_Launching(object sender, LaunchingEventArgs e)
{
Debug.WriteLine("Application_Launching");
}

private void Application_Activated(object sender, ActivatedEventArgs e)
{
Debug.WriteLine("Application_Activated");
}

private void Application_Deactivated(object sender, DeactivatedEventArgs e)
{
Debug.WriteLine("Application_Deactivated");
}

当我们运行此代码片段,并在五秒结束之前点击“开始”按钮时,我们可以看到以下输出:

Application_Launching

I've started

Application_Deactivated

Application_Activated

I'm done

根据上述事件序列,您可以看到异步等待任务在停用和激活后完成。

就异步等待的最佳实践而言:

  1. 对于使用外部资源(例如 WebRequest)的任何操作,最好在其周围有一个 try-catch block ,并进行一些有意义的错误处理。更多 @ http://msdn.microsoft.com/en-us/library/dd997415.aspx

  2. 对于长时间运行的任务,一旦应用程序停用,就需要停止,请使用 TaskCancellationToken 机制取消这些任务。更多 @ http://msdn.microsoft.com/en-us/library/dd997396.aspx

关于.net - Windows Phone 8 应用程序生命周期事件和异步/等待,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14568851/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com