$start = Get-Date
$task1 = {
$vUrl = 'http://img.mottoin.com/wp-content/uploads/2016/09/5-25.png'
$vLocalPath = 'c:/aaa.png'
Sleep(5)
Import-Module BitsTransfer
Start-BitsTransfer "$vUrl" "$vLocalPath"
Invoke-Item "$vLocalPath"
}
$task2 =
{
for($i=1;$i -le 20;$i++){
Sleep(1)
Write-Host "loop number_task2$i"
}
}
$task3 = {
for($i=1;$i -le 10;$i++){
Sleep(1)
Write-Host "loop number_task3$i"
}
}
# run 2 in separate threads, 1 in the foreground
$thread1 = [PowerShell]::Create()
$job1 = $thread1.AddScript($task1).BeginInvoke()
$thread2 = [PowerShell]::Create()
$job2 = $thread2.AddScript($task2).BeginInvoke()
$result3 = Invoke-Command -ScriptBlock $task3
do {
Start-Sleep -Milliseconds 100
} until ($job1.IsCompleted-and $job2.IsCompleted)