Если есть определенный поток с SyncrhonizationContext, например поток пользовательского интерфейса, то вы можете сделать, например,
// earlier on the UI thread...
let syncCtxt = System.Threading.SynchronizationContext.Current
// then define t3 as
let t3 = async {
do! Async.SwitchToGuiThread(syncCtxt)
// now we're running on the UI thread until the next async 'bind' point
return windowsProcess()
}
, но обычно параллельные задачи запускаются в пуле потоков.