|
Тема |
actions, threads, chain-of-actions |
|
Автор | tikva (Нерегистриран) | |
Публикувано | 15.06.07 14:18 |
|
|
Някой ако може да даде идея ще е супер.
======== целта: ===============
1) имам един timer, който периодично искам да извиква един "chain-of-actions" -
т.е. няколко TAction-a, които искам да се изпълнят последователно. Всеки от тези actions се обръща към един singleton (core) и му казва да прави нешо. този клас извършва някакво действие.
2) Във всеки един момент user-a може да запали някои от други 2 actions, които не са част от тази верига.
Когато това се случи искам:
- веригата да се "прекъсне" - т.е. като се изпълни поредния action да не се извика следващия.
- да се изпълни този "user" action
- да се пусне веригата отначало.
======= (опит за) реализация: ==========
1) Действията, които извършва cora са доста времеемки. затова съм ги направил в отделен thread. Като приключи действието се пали event - и всъщност този event показва, че дадения action е приключил и се стартира следващия от веригата (ако има).
2) При стартиране на веригата правя enabled := false на timera, за да не се окаже, че ще "светне" пак преди да е завършила веригата. в края правя enabled := true
всичко си изглежда ок, докато се намеси user-a :) малко се омотват нещата.
========== въпросчета: ============
- някой правил ли е нещо подобно и може ли да даде съвети ?
- по принцип onExecute() на даден action пали ли друг thread или се изпълнява в main-threada ?
- какво става ако се изпълнява даден код в main-threada и докато се изпълнява се пали някакъв друг action ?
a1.execute()
................... <=================== user action
a1.finishEvent() =
|
a2.execute() <=
....
a2.finishEvent()
..
..
..
|
| |
|
|
|