地铁样式应用程序中的任务

时间:2015-12-08 18:23:53

标签: c# multithreading windows-runtime windows-phone-8.1 windows-8.1

我对Metro风格应用程序(winrt)中的任务有疑问。

线程不可用(至少从Windows 8.1 / windows phone 8.1开始),因此要执行异步操作,我们必须立即使用Task。

  • 当我创建Task并调用Run doest时,它会创建新的Thread吗?如果有,有办法杀死/停止该线程吗?

  • 所有任务都是应用程序进程的一部分 - 所以当我调用Application.Current.Exit()时它会停止所有任务(如果我没有正确停止/关闭/结束它们吗?)如果不是它是否可能?在Thread中,您可以设置IsBackground属性以强制在应用程序关闭时关闭它们。

  • 应用程序暂停时,“任务”会发生什么?什么是指导方针?

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

  

当我创建Task并调用Run时它会创建新的Thread吗?如果有,有办法杀死/停止该线程吗?

它不会创建新线程,它将使用线程池中的线程。这假设您没有通过任何其他TaskScheduler

  

如果有,有办法杀死/停止该线程吗?

有一种方法可以通过CancellationTokenCancellationTokenSource结构进行合作取消。无法使用Task中止Thread.AbortTask != Thread

  

所以当我调用Application.Current.Exit()时,它会停止所有任务

默认情况下,Threadpool线程是后台的,它们不会像前台线程一样延长应用程序的生命周期。一旦应用程序关闭,您就可以安全地假设所有线程都已终止。