I plan to load only as much data as required in my app. Which means, that when the data is loaded via Wifi, I want to prefetch things. If the data is loaded via mobile plan
The phone can use both 3G and WiFi at the same time. The case I've tested - the phone haven't close existing TCP connections opened while on 3G after it found and connected to a WiFi network. If a new TCP connection is opened it'll use WiFi instead.
There's SocketExtensions.GetCurrentNetworkInterface
extension method from Microsoft.Phone.dll that tell you which interface is used for the specified socket.