Вы также можете сделать это так:
Task.Run(() => this.FunctionAsync()).Wait();
Оказывается, тот цикл с условием продолжения является серьезным пожирателем ресурсов ЦП :P
Я нашел лучший путь:
ZipCommand = "7za.exe a -r -y " & ZipDest & BuildLabel & ".zip " & buildSourceDir
Set wshShell = WScript.CreateObject("Wscript.Shell")
wshShell.Run ZipCommand,1,1
Последними двумя аргументами является Выполнение Витрины и Блока :)
При использовании "Исполнительного" метода он возвращает ссылку, таким образом, можно опросить свойство "Status" для определения, когда это завершено. Вот образец из MSDN:
Dim WshShell, oExec
Set WshShell = CreateObject("WScript.Shell")
Set oExec = WshShell.Exec(ZipCommand)
Do While oExec.Status = 0
WScript.Sleep 100
Loop