Вверх ↑
Ответов: 704
Рейтинг: 7
#1: 2019-02-06 12:48:16 ЛС | профиль | цитата
Netspirit, спасибо! Идея упирается в знание синтаксиса, но рассматриваю. Хотя интервал нужен все же 1 сек и меньше. Есть похожая база планировщика и там события чаще встречаются, использую точность до 1/10 сек.

Сейчас использую такой вариант. Он максимально освобождает поток от дальнейшей цепочки действий. Хотя обработка может и отложиться из-за DeferredEvent, но за то все события из базы вроде работают.
Правда вот иногда с ним у меня будто бы не проходит событие по ветке LineBreakEx после выдачи из стека.

Add(Counter,11129683,210,259)
{
@Color=9371647
Max=999999999
link(onNext,4720832:doEvent1,[])
}
Add(SafeMode,11010735,322,259)
{
Name="maintime"
link(onSafeMode,4282817:doString,[])
AddHint(2,42,56,13,Name)
}
Add(Hub,4720832,266,259)
{
link(onEvent1,11010735:doSafeMode,[])
link(onEvent2,13197420:doDeferredEvent,[(305,272)(305,335)])
}
Add(Thread,7940063,154,259)
{
Delay=100
link(onExec,11129683:doNext,[])
}
Add(DeferredEvent,13197420,315,329)
{
link(onDeferredEvent,12025064:doSafeMode,[])
}
Add(SafeMode,12025064,364,329)
{
Name="maintime"
WaitMode=1
link(onSafeMode,15564026:doPop,[(515,335)(515,272)])
AddHint(-4,42,56,13,Name)
}
Add(Stack,15564026,546,259)
{
link(onPop,12013288:doWork,[])
}
Add(Message,3046473,714,266)
{
}
Add(MT_String,7923535,476,259)
{
link(onResult,15564026:doPush,[])
}
Add(FormatStr,4282817,378,259)
{
DataCount=1
Mask="SELECT * FROM tab3 WHERE time LIKE '%1';"
link(onFString,5909670:doQuery,[])
}
Add(DSC_Query,5909670,427,259)
{
DSManager="parent.mem"
link(onQuery,7923535:doStr,[])
}
Add(LineBreakEx,12013288,602,266)
{
}
Add(LineBreakEx,12118628,602,315)
{
}
Add(LineBreakEx,12057542,679,266)
{
Type=1
link(OnEvent,3046473:doMessage,[])
}
Add(LineBreakEx,9157288,602,364)
{
}
Add(LineBreakEx,13876695,602,413)
{
}

карма: 0

0
Редактировалось 2 раз(а), последний 2019-02-06 12:49:58