2014-02-25 60 views
1

如果應用程序處於APPHANG狀態,任務仍可以運行嗎?在UI線程上,應用程序掛起(這是設計的,因爲我已經強制它用於測試如何糾正問題)。我明白,在apphang狀態下創建應用程序並不是一個好習慣,但出於測試目的,我想知道是否還有其他任務可以運行,看看它們不在主UI線程中。如果App掛起,任務仍可以運行嗎?

還是每個任務都進入鎖定狀態?

回答

3

如果應用程序處於APPHANG狀態,任務仍可以運行嗎?

這完全取決於具體的任務。一些任務將需要使用UI線程,這取決於它們的定義方式,有些則不會。

也許該任務是使用TaskSchedulerSynchronizationContext來計劃的,該打算將代碼的執行編組到UI線程。也許只有在UI線程上運行的其他代碼觸發事件時纔會完成。也許它是某種其他任務的延續,它以某種方式依賴於UI線程。也許它正在運行代碼,通過某種形式的替代機制依賴於在UI線程中運行代碼。實際上,通過任意數量的間接級別,可以有無數種可能的方式,如果UI線程被阻塞,任務不能完成。

當然,如果UI線程阻塞,直到任務同時完成,那麼你會遇到死鎖。

還是每個任務都進入鎖定狀態?

當然不是這種情況。當然可以編寫完成的任務,而不必考慮UI線程在做什麼。

相關問題