- A Cookbook Topic: "Delay", "WaitUntil" and "Let'ssee actions"

From: Marco Ciot <"Marco>
Date: Fri, 12 May 2006 20:20:22 +0200

----boundary-LibPST-iamunique-557511759_-_-
Content-type: text/plain

O.k.
If you look at it that way, yes, then the system will be blocked against
user interaction.
BUT: the background processing will be done, i.e. all registered actions
will execute their Do method as requested by them through Services.DoLater.

According to me it doesn't matter that the system freezes during such a call
to Wait.Time.

To be honest such a function to me appears to be the most contradicting one
with respect to multi tasking.
As I understood, Helmut wanted to use it to easily port old Oberon software.

Just think of the fact that ONLY one task of all tasks in a multitasking
system will ever be able to execute Wait.Time, and this task will always be
the interactive task in BB.
All other tasks, i.e. the background tasks will simply use the DoLater
function, which does nothing else but wait the desired time.

NOW, if anybody wanted to have such a Wait.Time function to be useful for
background tasks, then he had to really implement threads instead of actions
in BB.
Note that a thread always needs to have its separated program stack.
In other words, that would be a bigger thing and I believe it contradicts
the philosophy of cooperating multitasking.

I'm convinced that everything can be implemented using actions and the
result code will even be more efficient, more readable AND especially more
ROBUST within a framework like the one of BB.

Marco Ciot


-----Original Message-----
From: blackbox{([at]})nowhere.xy
G. Danforth
Sent: Friday, May 12, 2006 19:52
To: BlackBox Mailing List
Subject: [BlackBox] - A Cookbook Topic: "Delay", "WaitUntil" and
"Let'ssee actions"


Marco,
If the following is what you meant then it doesn't work for me. The
cursor remains as the pointing hand
when the commandor is clicked and no actions can be initiated during the
wait time. So what did you
really mean?
-Doug
-----------------
MODULE Wait;
    IMPORT Services, Out:=StdLog;

    PROCEDURE Time (ms: INTEGER);
        VAR time: LONGINT;
    BEGIN
        time := Services.Ticks() + ms;
        WHILE Services.Ticks() < time DO
            Services.actionHook.Step
        END
    END Time;

    PROCEDURE Test*;
    BEGIN
        Out.String("start..");
        Time(10000);
        Out.String("stop.");
        Out.Ln;
    END Test;

END Wait.

--------------------
Marco Ciot wrote:
> Hello Helmut
>
> Sorry for not contributing earlier to this subject.
> I quickly read the follow ups and didn't really see a reason why to do
such
> fuzzy things... sorry folks :)
>
> The solution to this indeed is to call Services.actionHook.Step during a
> timed loop.
> This procedure exactly does the stepping of the background tasks
> (Services.Actions) and works fine while being called on command level
also.
> (It should not be called by Actions, however!)
> (Well, let me also clarify that this is my understanding of the module
> Services and not a documented feature.)
>
> How come you didn't try this yourself after having suggested it in
xyBoss3?
>
> Note that by adding such a call in HostPorts.Input followed by a
conditional
> Kernel.Sleep and having Services.actionHook.Step a little bit more robust
> towards calls from anywhere (even Actions) any BB system becomes much more
> responsive and won't do any excess CPU heating while tracking the mouse,
> e.g. making a text selection ;)
>
> Regards
> Marco Ciot
>
>

--- BlackBox
--- send subject HELP or UNSUBSCRIBE to blackbox{([at]})nowhere.xy

--- BlackBox
--- send subject HELP or UNSUBSCRIBE to blackbox{([at]})nowhere.xy



----boundary-LibPST-iamunique-557511759_-_-
Content-type: application/rtf
Content-transfer-encoding: base64
Content-Disposition: attachment; filename="rtf-body.rtf"

e1xydGYxXGFuc2lcYW5zaWNwZzEyNTJcZnJvbXRleHQgXGRlZmYwe1xmb250dGJsDQp7XGYwXGZz
d2lzcyBBcmlhbDt9DQp7XGYxXGZtb2Rlcm4gQ291cmllciBOZXc7fQ0Ke1xmMlxmbmlsXGZjaGFy
c2V0MiBTeW1ib2w7fQ0Ke1xmM1xmbW9kZXJuXGZjaGFyc2V0MCBDb3VyaWVyIE5ldzt9fQ0Ke1xj
b2xvcnRibFxyZWQwXGdyZWVuMFxibHVlMDtccmVkMFxncmVlbjBcYmx1ZTI1NTt9DQpcdWMxXHBh
cmRccGxhaW5cZGVmdGFiMzYwIFxmMFxmczIwIE8uay5ccGFyDQpJZiB5b3UgbG9vayBhdCBpdCB0
aGF0IHdheSwgeWVzLCB0aGVuIHRoZSBzeXN0ZW0gd2lsbCBiZSBibG9ja2VkIGFnYWluc3RccGFy
DQp1c2VyIGludGVyYWN0aW9uLlxwYXINCkJVVDogdGhlIGJhY2tncm91bmQgcHJvY2Vzc2luZyB3
aWxsIGJlIGRvbmUsIGkuZS4gYWxsIHJlZ2lzdGVyZWQgYWN0aW9uc1xwYXINCndpbGwgZXhlY3V0
ZSB0aGVpciBEbyBtZXRob2QgYXMgcmVxdWVzdGVkIGJ5IHRoZW0gdGhyb3VnaCBTZXJ2aWNlcy5E
b0xhdGVyLlxwYXINClxwYXINCkFjY29yZGluZyB0byBtZSBpdCBkb2Vzbid0IG1hdHRlciB0aGF0
IHRoZSBzeXN0ZW0gZnJlZXplcyBkdXJpbmcgc3VjaCBhIGNhbGxccGFyDQp0byBXYWl0LlRpbWUu
XHBhcg0KXHBhcg0KVG8gYmUgaG9uZXN0IHN1Y2ggYSBmdW5jdGlvbiB0byBtZSBhcHBlYXJzIHRv
IGJlIHRoZSBtb3N0IGNvbnRyYWRpY3Rpbmcgb25lXHBhcg0Kd2l0aCByZXNwZWN0IHRvIG11bHRp
IHRhc2tpbmcuXHBhcg0KQXMgSSB1bmRlcnN0b29kLCBIZWxtdXQgd2FudGVkIHRvIHVzZSBpdCB0
byBlYXNpbHkgcG9ydCBvbGQgT2Jlcm9uIHNvZnR3YXJlLlxwYXINClxwYXINCkp1c3QgdGhpbmsg
b2YgdGhlIGZhY3QgdGhhdCBPTkxZIG9uZSB0YXNrIG9mIGFsbCB0YXNrcyBpbiBhIG11bHRpdGFz
a2luZ1xwYXINCnN5c3RlbSB3aWxsIGV2ZXIgYmUgYWJsZSB0byBleGVjdXRlIFdhaXQuVGltZSwg
YW5kIHRoaXMgdGFzayB3aWxsIGFsd2F5cyBiZVxwYXINCnRoZSBpbnRlcmFjdGl2ZSB0YXNrIGlu
IEJCLlxwYXINCkFsbCBvdGhlciB0YXNrcywgaS5lLiB0aGUgYmFja2dyb3VuZCB0YXNrcyB3aWxs
IHNpbXBseSB1c2UgdGhlIERvTGF0ZXJccGFyDQpmdW5jdGlvbiwgd2hpY2ggZG9lcyBub3RoaW5n
IGVsc2UgYnV0IHdhaXQgdGhlIGRlc2lyZWQgdGltZS5ccGFyDQpccGFyDQpOT1csIGlmIGFueWJv
ZHkgd2FudGVkIHRvIGhhdmUgc3VjaCBhIFdhaXQuVGltZSBmdW5jdGlvbiB0byBiZSB1c2VmdWwg
Zm9yXHBhcg0KYmFja2dyb3VuZCB0YXNrcywgdGhlbiBoZSBoYWQgdG8gcmVhbGx5IGltcGxlbWVu
dCB0aHJlYWRzIGluc3RlYWQgb2YgYWN0aW9uc1xwYXINCmluIEJCLlxwYXINCk5vdGUgdGhhdCBh
IHRocmVhZCBhbHdheXMgbmVlZHMgdG8gaGF2ZSBpdHMgc2VwYXJhdGVkIHByb2dyYW0gc3RhY2su
XHBhcg0KSW4gb3RoZXIgd29yZHMsIHRoYXQgd291bGQgYmUgYSBiaWdnZXIgdGhpbmcgYW5kIEkg
YmVsaWV2ZSBpdCBjb250cmFkaWN0c1xwYXINCnRoZSBwaGlsb3NvcGh5IG9mIGNvb3BlcmF0aW5n
IG11bHRpdGFza2luZy5ccGFyDQpccGFyDQpJJ20gY29udmluY2VkIHRoYXQgZXZlcnl0aGluZyBj
YW4gYmUgaW1wbGVtZW50ZWQgdXNpbmcgYWN0aW9ucyBhbmQgdGhlXHBhcg0KcmVzdWx0IGNvZGUg
d2lsbCBldmVuIGJlIG1vcmUgZWZmaWNpZW50LCBtb3JlIHJlYWRhYmxlIEFORCBlc3BlY2lhbGx5
IG1vcmVccGFyDQpST0JVU1Qgd2l0aGluIGEgZnJhbWV3b3JrIGxpa2UgdGhlIG9uZSBvZiBCQi5c
cGFyDQpccGFyDQpNYXJjbyBDaW90XHBhcg0KXHBhcg0KXHBhcg0KLS0tLS1PcmlnaW5hbCBNZXNz
YWdlLS0tLS1ccGFyDQpGcm9tOiBibGFja2JveEBvYmVyb24uY2ggW21haWx0bzpibGFja2JveEBv
YmVyb24uY2hdT24gQmVoYWxmIE9mIERvdWdsYXNccGFyDQpHLiBEYW5mb3J0aFxwYXINClNlbnQ6
IEZyaWRheSwgTWF5IDEyLCAyMDA2IDE5OjUyXHBhcg0KVG86IEJsYWNrQm94IE1haWxpbmcgTGlz
dFxwYXINClN1YmplY3Q6IFtCbGFja0JveF0gLSBBIENvb2tib29rIFRvcGljOiAiRGVsYXkiLCAi
V2FpdFVudGlsIiBhbmRccGFyDQoiTGV0J3NzZWUgYWN0aW9ucyJccGFyDQpccGFyDQpccGFyDQpN
YXJjbyxccGFyDQpJZiB0aGUgZm9sbG93aW5nIGlzIHdoYXQgeW91IG1lYW50IHRoZW4gaXQgZG9l
c24ndCB3b3JrIGZvciBtZS4gIFRoZVxwYXINCmN1cnNvciByZW1haW5zIGFzIHRoZSBwb2ludGlu
ZyBoYW5kXHBhcg0Kd2hlbiB0aGUgY29tbWFuZG9yIGlzIGNsaWNrZWQgYW5kIG5vIGFjdGlvbnMg
Y2FuIGJlIGluaXRpYXRlZCBkdXJpbmcgdGhlXHBhcg0Kd2FpdCB0aW1lLiAgU28gd2hhdCBkaWQg
eW91XHBhcg0KcmVhbGx5IG1lYW4/XHBhcg0KLURvdWdccGFyDQotLS0tLS0tLS0tLS0tLS0tLVxw
YXINCk1PRFVMRSBXYWl0O1xwYXINCiAgICBJTVBPUlQgU2VydmljZXMsIE91dDo9U3RkTG9nO1xw
YXINClxwYXINCiAgICBQUk9DRURVUkUgVGltZSAobXM6IElOVEVHRVIpO1xwYXINCiAgICAgICAg
VkFSIHRpbWU6IExPTkdJTlQ7XHBhcg0KICAgIEJFR0lOXHBhcg0KICAgICAgICB0aW1lIDo9IFNl
cnZpY2VzLlRpY2tzKCkgKyBtcztccGFyDQogICAgICAgIFdISUxFIFNlcnZpY2VzLlRpY2tzKCkg
PCB0aW1lIERPXHBhcg0KICAgICAgICAgICAgU2VydmljZXMuYWN0aW9uSG9vay5TdGVwXHBhcg0K
ICAgICAgICBFTkRccGFyDQogICAgRU5EIFRpbWU7XHBhcg0KXHBhcg0KICAgIFBST0NFRFVSRSBU
ZXN0KjtccGFyDQogICAgQkVHSU5ccGFyDQogICAgICAgIE91dC5TdHJpbmcoInN0YXJ0Li4iKTtc
cGFyDQogICAgICAgIFRpbWUoMTAwMDApO1xwYXINCiAgICAgICAgT3V0LlN0cmluZygic3RvcC4i
KTtccGFyDQogICAgICAgIE91dC5MbjtccGFyDQogICAgRU5EIFRlc3Q7XHBhcg0KXHBhcg0KRU5E
IFdhaXQuXHBhcg0KXHBhcg0KLS0tLS0tLS0tLS0tLS0tLS0tLS1ccGFyDQpNYXJjbyBDaW90IHdy
b3RlOlxwYXINCj4gSGVsbG8gSGVsbXV0XHBhcg0KPlxwYXINCj4gU29ycnkgZm9yIG5vdCBjb250
cmlidXRpbmcgZWFybGllciB0byB0aGlzIHN1YmplY3QuXHBhcg0KPiBJIHF1aWNrbHkgcmVhZCB0
aGUgZm9sbG93IHVwcyBhbmQgZGlkbid0IHJlYWxseSBzZWUgYSByZWFzb24gd2h5IHRvIGRvXHBh
cg0Kc3VjaFxwYXINCj4gZnV6enkgdGhpbmdzLi4uIHNvcnJ5IGZvbGtzIDopXHBhcg0KPlxwYXIN
Cj4gVGhlIHNvbHV0aW9uIHRvIHRoaXMgaW5kZWVkIGlzIHRvIGNhbGwgU2VydmljZXMuYWN0aW9u
SG9vay5TdGVwIGR1cmluZyBhXHBhcg0KPiB0aW1lZCBsb29wLlxwYXINCj4gVGhpcyBwcm9jZWR1
cmUgZXhhY3RseSBkb2VzIHRoZSBzdGVwcGluZyBvZiB0aGUgYmFja2dyb3VuZCB0YXNrc1xwYXIN
Cj4gKFNlcnZpY2VzLkFjdGlvbnMpIGFuZCB3b3JrcyBmaW5lIHdoaWxlIGJlaW5nIGNhbGxlZCBv
biBjb21tYW5kIGxldmVsXHBhcg0KYWxzby5ccGFyDQo+IChJdCBzaG91bGQgbm90IGJlIGNhbGxl
ZCBieSBBY3Rpb25zLCBob3dldmVyISlccGFyDQo+IChXZWxsLCBsZXQgbWUgYWxzbyBjbGFyaWZ5
IHRoYXQgdGhpcyBpcyBteSB1bmRlcnN0YW5kaW5nIG9mIHRoZSBtb2R1bGVccGFyDQo+IFNlcnZp
Y2VzIGFuZCBub3QgYSBkb2N1bWVudGVkIGZlYXR1cmUuKVxwYXINCj5ccGFyDQo+IEhvdyBjb21l
IHlvdSBkaWRuJ3QgdHJ5IHRoaXMgeW91cnNlbGYgYWZ0ZXIgaGF2aW5nIHN1Z2dlc3RlZCBpdCBp
blxwYXINCnh5Qm9zczM/XHBhcg0KPlxwYXINCj4gTm90ZSB0aGF0IGJ5IGFkZGluZyBzdWNoIGEg
Y2FsbCBpbiBIb3N0UG9ydHMuSW5wdXQgZm9sbG93ZWQgYnkgYVxwYXINCmNvbmRpdGlvbmFsXHBh
cg0KPiBLZXJuZWwuU2xlZXAgYW5kIGhhdmluZyBTZXJ2aWNlcy5hY3Rpb25Ib29rLlN0ZXAgYSBs
aXR0bGUgYml0IG1vcmUgcm9idXN0XHBhcg0KPiB0b3dhcmRzIGNhbGxzIGZyb20gYW55d2hlcmUg
KGV2ZW4gQWN0aW9ucykgYW55IEJCIHN5c3RlbSBiZWNvbWVzIG11Y2ggbW9yZVxwYXINCj4gcmVz
cG9uc2l2ZSBhbmQgd29uJ3QgZG8gYW55IGV4Y2VzcyBDUFUgaGVhdGluZyB3aGlsZSB0cmFja2lu
ZyB0aGUgbW91c2UsXHBhcg0KPiBlLmcuIG1ha2luZyBhIHRleHQgc2VsZWN0aW9uIDspXHBhcg0K
PlxwYXINCj4gUmVnYXJkc1xwYXINCj4gTWFyY28gQ2lvdFxwYXINCj5ccGFyDQo+XHBhcg0KXHBh
cg0KLS0tIEJsYWNrQm94XHBhcg0KLS0tIHNlbmQgc3ViamVjdCBIRUxQIG9yIFVOU1VCU0NSSUJF
IHRvIGJsYWNrYm94QG9iZXJvbi5jaFxwYXINClxwYXINCi0tLSBCbGFja0JveFxwYXINCi0tLSBz
ZW5kIHN1YmplY3QgSEVMUCBvciBVTlNVQlNDUklCRSB0byBibGFja2JveEBvYmVyb259fQBQ/1IA
FOMTYWARAAAa


----boundary-LibPST-iamunique-557511759_-_---
Received on Fri May 12 2006 - 20:20:22 UTC

This archive was generated by hypermail 2.3.0 : Thu Sep 26 2013 - 06:28:01 UTC