end;
注意,程序通过调用Windows的InterlockedIncrement来避免被多线程所共享的全局变量发生访问冲突。也可以通过使用critical section或者是TidThreadSafeInteger(见于IdThreadsafe单元)来避免这种情况。
图21.5显示了程序的输出(通过两个不同的浏览器创建两个会话期),程序还有一个复选框,用来激活计时器。听起来挺不可思议的,但实际上在IntraWeb程序中,计时器就和Windows中的计时器一样工作。当计时器的时间间隔到期时,相应的代码就会被执行。在网页中,这意味着触发JavaScript代码来刷新页面:
IWTIMER1=setTimeout(''''SubmitClick("IWTIMER1","", false)'''',5000);

图21.5、运行在两个不同浏览器中的IWSession例程
与WebBroker和WebSnap整合
到目前为止,只讲了如何创建stand-alone模式的IntraWeb应用程序。当你需要开发IIS或是Apache下的IntraWeb动态链接库时,情形也基本一样。但是,如果你想用IntraWeb技术来拓展已有的WebBroker(或是WebSnap)程序,情况就不一样了。
两种技术的桥梁是IWPageProducer组件。该组件像其他页生成器组件一样依附于WebBroker的action,同时可以使用一个特殊的事件来创建并获得一个IntraWeb窗体:
procedure TWebModule1.IWPageProducer1GetForm(ASender: TIWPageProducer;
AWebApplication: TIWApplication; var VForm: TIWPageForm);begin VForm := TformMain.Create(AWebApplication);end;
仅一行代码,就能实现IntraWeb页嵌入WebBroker程序,在例程CgiIntra中也是如此。IWModuleController对IntraWeb支持提供核心服务。每个IntraWeb项目都必须有这种组件才能正确地工作。
警告:Delphi7中发行的IntraWeb的IWModuleController组件和Delphi的Web App Debugger有冲突,但问题已经解决,可以免费更新。
这是例程的web module窗体摘要:
object WebModule1: TWebModule1
Actions = < item Default = True Name = ''''WebActionItem1'''' PathInfo = ''''/show'''' OnAction = WebModule1WebActionItem1Actionend
item文章整理:西部数码--专业提供域名注册、虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!




