Одна из причин продолжения использовать капитализацию - (или кто-то еще) при просмотре кода в чем-то как блокнот это помогает читать. т.е. можно дифференцироваться легко между "ключевыми словами" и именами таблиц, SP, udf's и т.д.
Нет, foo ()
не будет прерван.
Flex is однопоточный, поэтому foo ()
продолжит работу. После завершения работы foo () и возврата управления в цикл обработки событий будет обработано первое событие в очереди событий.
Это действительно может быть вроде как
Я действительно не знаю, как в этом отношении работает Flash, но, например, в C # есть несколько случаев. Я предлагаю вам прочитать, как это работает. Также хорошо включить отладчик и изучить стек, который привел к вашему обработчику событий, чтобы понять его.
По сути, происходит один из двух сценариев:
Как говорит Dr_Asik, вы могли бы напрямую вызвать делегировать мероприятие, что в точности похоже на синхронный вызов метода. В этом случае применяются обычные правила переключения контекста потоков, но на самом деле событие не имеет особых свойств. Это просто вызов функции.
Вы могли бы говорить о событиях UI Forms. В этом случае действуют некоторые особые правила. Событие пользовательского интерфейса «отправляется» в очередь событий, а не выполняется синхронно. Итак, если foo () находится в «основном» потоке пользовательского интерфейса, тогда пользователь нажимает клавишу во время работы foo (), тогда нажатие клавиши перехватывается ОС и отправляется в очередь событий пользовательского интерфейса приложения. Но foo () уже запущен, поэтому основной поток не будет останавливаться и проверять эту очередь. Только после того, как весь стек вызовов foo () завершится полностью до цикла проверки очереди сообщений, основной поток найдет это сообщение, обработает его и вызовет свой обработчик.
Чтобы было ясно, в этом последнем случае foo () гарантированно не будет прервана событием пользовательского интерфейса.
Однако в случае 2 существует другой сценарий, когда foo () не находится в основном потоке пользовательского интерфейса. В этом случае его можно полностью прервать обычным переключением контекста.
В C # это может стать еще сложнее, если вы начнете использовать Control.Invoke ().
Это не зависит от Flash, но я надеюсь, что это поможет . Я подозреваю, что у Flash есть основной поток с очередью событий и циклом обработки, как и в C #. Это обычная модель, которую вы найдете по крайней мере в C #, Java и Delphi.
В C # это может стать еще сложнее, если вы начнете использовать Control.Invoke ().
Это не зависит от Flash, но я надеюсь, что это поможет. Я подозреваю, что у Flash есть основной поток с очередью событий и циклом обработки, как и в C #. Это обычная модель, которую вы найдете по крайней мере в C #, Java и Delphi.
В C # это может стать еще сложнее, если вы начнете использовать Control.Invoke ().
Это не зависит от Flash, но я надеюсь, что это поможет. Я подозреваю, что у Flash есть основной поток с очередью событий и циклом обработки, как и в C #. Это обычная модель, которую вы найдете по крайней мере в C #, Java и Delphi.