Я новичок в Cocoa и AppleScript. Недавно я хочу сделать что-то с помощью команды «do shell script» в Cocoa-AppleScript много раз и одновременно показать окно с индикатором выполнения, чтобы указать, сколько раз я это сделал.
Мой код выглядит так:
property progressBar: missing value
on applicationWillFinishLaunching_(aNotification)
repeat with i from 1 to 8
set progressBar's doublevalue to i
do shell script "sleep 1"
delay 1
end repeat
end applicationWillFinishLaunching_
Это покажет индикатор выполнения и указывает прогресс. Однако окно, содержащее индикатор выполнения, будет неактивным, пока повторение не будет завершено. Я думаю, это связано с тем, что приложение Cocoa-AppleScript имеет только один поток, поэтому, когда оно выполняет команду «сделать сценарий оболочки», графический интерфейс просто не может обрабатывать другие события. Я попытался запустить сценарий оболочки в фоновом режиме с хвостовым «&», но он ведет себя как зависший и по-прежнему занимает много времени.
Я думаю, что даже команду «сделать сценарий оболочки» можно выполнить в фоновом режиме. Мне все равно нужно получать уведомления, когда она будет завершена, чтобы обновить индикатор выполнения, но я не знаю, как этого добиться.
Итак, мой вопрос: как сделать что-то с помощью «выполнить сценарий оболочки» асинхронно и получить информацию, когда задание будет завершено, в Cocoa-AppleScript?
(Кстати, если я удалю эту строку «задержка 1», индикатор выполнения даже не обновится, кто-нибудь знает причину?)