Jump to content
Alloder.pro: about Allods with love
Search In
  • More options...
Find results that contain...
Find results in...

New program for writers

We turn from quantity to quality and tell you how we will supplement the Allods Team program with rewards in rubles.

More

The new Updater

Let us to introduce the new addon updater software and to share the details

Read more

Alloder 2.0

We have started the process of project evolve, and this relates not only, and not even primarily of the site's view

Read more

слежка за событиями


icreator
 Share

Recommended Posts

правильно ли делать слежку за событиями, в ответ на действия аддона так, чтобы такие же события от пользователя не обрабатывались:

объявляем слежку

common.RegisterEventHandler( OnEvetMY, "EVENT_1" )

а в вызываемой процедуре сразу обрубаем:

function OnEvetMY ( pars )

common.UnRegisterEvent( "EVENT_1" )

...

Link to comment
Share on other sites

Да, кстати, сейчас сообразил, если у тебя событие отслеживает более одного хендлера то лучше все таки хендлер отписывать а не все подряд.

Link to comment
Share on other sites

Quote:
правильно ли делать слежку за событиями, в ответ на действия аддона так, чтобы такие же события от пользователя не обрабатывались:


Я не понял вопроса, наверное. Имеется ввиду, что событие нужно поймать всего один раз, и прекратить слежку, так? Если так, то ДА, это делается именно так, с помощью common.UnRegisterEvent() или common.UnRegisterEventHandler().


Но, как заметил Setras, команда

common.UnRegisterEvent( "EVENT_1" )

отписывает ВООБЩЕ ВСЕ функции аддона от отслеживания события "EVENT_1". Если в аддоне такая функция всего одна, то всё в порядке. Но, если их больше одной, то, наверное, лучше вот так:

common.UnRegisterEventHandler( OnEvetMY, "EVENT_1" )

такая команда отпишет только функцию OnEvetMY(), а остальные не тронет.
Link to comment
Share on other sites

понятно. а по части производительности? если события происходят например часто, скажем обработка списка почты, то лучше включать /выключать слежку или просто в подпрограмме-обработчике OnEvetMY сделать пару проверок?

и еще вопрос - если на одно событие подписано несколько подпрограмм - то как они будут вызываться?

Link to comment
Share on other sites

Quote:
а по части производительности?

Если событие происходит редко, то можно не отписывать.
Но если оно происходит довольно ЧАСТО, то тогда лучше подписываться только на тот момент, когда оно нужно, а потом отписываться.

Quote:
если на одно событие подписано несколько подпрограмм - то как они будут вызываться?

По очереди. Но, в каком порядке - я не знаю. Никогда с этим не экспериментировал.
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

By using our site you agree to the Terms of Use