Thx for all the feedback so far.
So if I summarize correctly:
By default, anything that takes more than 5 seconds to complete (the maximum time allowed for a deactivated app before entering suspend state) will be interrupted when the app is pushed in the background until the app is resumed / restarted. No multitasking for my app in the background there.
If I want to do some background processing other than audio playback or file upload/download (within WinRT !), I register my task with BackgroundTaskBuilder and have it executed by backgroundTaskHost.exe, a "restricted resource-managed environment" with "a limited amount of CPU time" (see the above whitepaper). Any information on how much CPU time the background task actually receives if, say, no other tasks are active and the user does not interact with the GUI?
Still unclear about how ThreadPool::RunAsync created tasks behave when the app is suspended. My best bet would be, they get suspended as well.
If I want to do heavy lifting in my Metro app, I have to "punch a hole" in the WinRT box my app lives in, either to Win32, to some server code or to the cloud. I guess it would be possible to implement the "server" on the same machine.
Add your 2¢