Я новичок в Cocoa и AppleScript. Недавно я хочу что-то делать с помощью команды «do shell script» в Cocoa-AppleScript много раз и одновременно показывать окно с индикатором выполнения, чтобы указать, сколько раз я делал.Асинхронно «скрипт оболочки» в 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 имеет только один поток, поэтому, когда он выполняет команду «make shell script», графический интерфейс просто не может обрабатывать другие события. Я попытался позволить shellscript работать в фоновом режиме с хвостом «&», но он ведет себя как повешенный и все еще потребляет много времени.
Я думаю, что даже команда «выполнить shell-скрипт» может быть выполнена в фоновом режиме. Мне все равно нужно получать уведомление, когда она завершена, чтобы обновить индикатор выполнения, но я не знаю, как этого достичь.
Так что мой вопрос: как сделать что-то через «сделать сценарий оболочки» асинхронно и быть информированным, когда задание будет завершено, в Cocoa-AppleScript?
(Кстати, если я удалю, что «оттянуть» 1 линия, индикатор не будет даже обновлять, кто-нибудь знает причину?)
Вы имеете право на проблему с одним потоком, что может быть проблемой при попытке сделать этот тип вещей с помощью Applescript. Существуют приложения «обертки» (один приходит на ум, называемый «[Platypus] (http://www.sveinbjorn.org/platypus)»), который может делать то, что вы хотите, поэтому, возможно, подумайте, что это вариант. –
@ l'L'l Я попытаюсь использовать это приложение. Спасибо! –