如果App挂起,任务是否仍然可以运行?

时间:2014-02-25 17:26:13

标签: c# task

如果应用程序处于APPHANG状态,任务是否仍然可以运行?在UI线程上,应用程序挂起(这是设计,因为我强迫它测试如何纠正问题)。我知道将应用程序置于apphang状态并不是一个好的做法,但出于测试目的,我想知道其他任务是否仍然可以运行,看看它们不在主UI线程上。

或者每项任务都进入锁定状态吗?

1 个答案:

答案 0 :(得分:3)

  

如果应用程序处于APPHANG状态,任务是否仍然可以运行?

这完全取决于具体任务。有些任务需要根据UI线程的定义使用UI线程,有些则不需要。

也许该任务是使用TaskSchedulerSynchronizationContext来安排的,该{{1}}或{{1}}打算将代码的执行封送到UI线程。也许只有在UI线程上运行的其他代码触发事件时才会完成。也许它是某些其他任务的延续,它在某种程度上依赖于UI线程。也许正在运行代码,通过某种形式的替代机制依赖于在UI线程中运行代码。通过任意数量的间接层,实际上有无数种可能的方法,如果UI线程被阻塞,任务就无法完成。

当然,如果UI线程在任务同时完成之前阻塞,那么就会出现死锁。

  

或者每项任务都进入锁定状态吗?

当然不是这样。当然可以编写将运行完成的任务,而不考虑UI线程正在做什么。