Мне уже лет 5 твердят,что команда "wait" утечна. Объясните раз и навсегда,чем заменить команду ждать? Спасибо"

SсRealm, я скопировал PolledWait() и исправил немного, можешь скопировать и вызывать когда нужно. (Если я правильно исправил)
//Исправленный PolledWait()
    nothing Wait ( real duration ){ 
        timer t
        real timeRemaining
        if (duration > 0) {
            t = CreateTimer()
            TimerStart(t, duration, false, null)
            loop{
                timeRemaining = TimerGetRemaining(t)
                exitwhen timeRemaining <= 0
                if (timeRemaining > bj_POLLED_WAIT_SKIP_THRESHOLD) {
                    TriggerSleepAction(0.1 * timeRemaining)
                }else{
                    TriggerSleepAction(bj_POLLED_WAIT_INTERVAL)
                }
            }
            DestroyTimer(t)
            t = null
        }
    }
Это cJASS, если что
`
ОЖИДАНИЕ РЕКЛАМЫ...

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
15
Тебе действительно за эти 5 лет никто не рассказал о таймерах?
28
Мне уже лет 5 твердят,что команда "wait" утечна.
PolledWait не обнуляет переменную таймера, вот и всё. Это не утечка, но хендл не освобождается.
21
Разве она утечна? Никогда о подобном не слышал. Везде говорится лишь что она не подходит для реализации манипуляций с высоким периодом.
Открой PolledWait (Или как там ее) в JNGP и все поймешь с первого взгляда.
21
GetLocalPlayer:
Тебе действительно за эти 5 лет никто не рассказал о таймерах?
Нет Ни кто(
20
Raised, тоесть PolledWait() можно даже использовать в способностях и все будет хорошо работать?
21
PolledWait не обнуляет переменную таймера
Если это утверждение верно, то да, но только с глобальными таймерами.
38
Можно смело юзать чистый TriggerSleepAction для всяких кветов или сценариев, но он продолжает работать в паузе игры, т.е. лучше реализовать свой PolledWait, устранив утечку. Для точности ниже 0.27 сек (зависит от машины) нужно юзать таймеры
21
Дайте мне ссылку как использовать таймеры и на PolledWait?
38
могу вот это предложить, для общего образования xgm.guru/p/wc3/code-flow-and-data-access-thread
28
Если это утверждение верно
Классика blizzard.j, объект удаляется, но переменная на него не обнуляется.
20
ScorpioT1000, нужно сначала уничтожать таймер, затем обнулять?
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.