开发者

Powershell Backgroundworker

开发者 https://www.devze.com 2023-01-20 09:42 出处:网络
Can anyone give开发者_如何学运维 me an example of how to use BackgroundWorker in Powershell? I want to write something so when a new tab is selected in my Powershell GUI app, it will switch to the ta

Can anyone give开发者_如何学运维 me an example of how to use BackgroundWorker in Powershell?

I want to write something so when a new tab is selected in my Powershell GUI app, it will switch to the tab with a "please wait" message displayed, then run some checks in a BackgroundWorker thread, and then update.

Is this possible in Powershell? All the Googling I've done points to c# or VB.Net.

Cheers,

Ben


If the background thread is going to use a PowerShell pipeline to do its work, then I would avoid using BackgroundWorker. It wouldn't be tied to a PowerShell Runspace. Try doing your async processing using Register-ObjectEvent e.g.:

Register-ObjectEvent $tabItem Loaded -Action { <do bg work here> }


You could also use Start-Process:

$scriptPath = "c:\script.ps1"
$allArgs = "/someOrNoArgsHere /moreArgs"
$backgroundProcess = Start-Process -FilePath $scriptPath -ArgumentList $allArgs -Wait -Passthru -WindowStyle Hidden
$backgroundProcess.WaitForExit()
$backgroundProcess.ExitCode

Or you could use a one-liner:

Start-Process -FilePath "c:\script.ps1" -ArgumentList "/someOrNoArgsHere /moreArgs" -Wait -Passthru -WindowStyle Hidden
0

精彩评论

暂无评论...
验证码 换一张
取 消