У меня есть функция скрипта, которая вызывает. сеть для манипулирования текстовыми документами. Оно работает. Теперь я хочу создать подпоток для его выполнения, а затем основной поток решает, завершит ли он указанное время или превышает его, и завершает его после этого времени.
Как показано в коде, он не выполняет функции в блоке кода $ node, но вместо этого $ task1 выполняет командлет. Это почему? Как я могу удовлетворить свои потребности?
try{
# $cb is a instance of class,scan is the function I want to invoke.
$code = { $cb.Scan($PrepareFileName, $NailDirName, $HtmlFileName) }
# $task1 = { Start-Sleep -Seconds 9; Get-Service }
$newThread = [PowerShell]::Create().AddScript($code)
$handleTh = $newThread.BeginInvoke()
$nTimes = 0;
do
{
$nTimes++;
if($handleTh.IsCompleted -or $nTimes -gt 10)
{
break;
}
Start-Sleep -Milliseconds 500
} while($true)
$newThread.EndInvoke($handleTh)
$newThread.Runspace.Close()
$newThread.Dispose()
}catch{
}