intraweb的内存溢出问题?(100分)

  • 主题发起人 主题发起人 zhuiganzhe
  • 开始时间 开始时间
Z

zhuiganzhe

Unregistered / Unconfirmed
GUEST, unregistred user!
请问:
如果我的intraweb程序里不断调用
AFormClass.Create(WebApplication).Show
而不release的话,会不会有内存溢出问题?

或是intraweb在调用AFormClass.Create(WebApplication).Show的时候,会不会自动判断该formclass是否已经创建并自动关闭前面已经创建的?
 
1 不会内存溢出,因为SHOW的调会,自然会调用activeform的hide,
将该窗口释放。
2 没有测试,应该会关闭并重新创建。
 
谢谢回答,先记20分。
还有谁知道吗?
 
骗分来了。[:)]
以下摘自《IntraWeb 用户手册》
-----------------
Form Managerment

介绍
在一个IntraWeb应用程序中管理Form就像在普通的Delphi程序中一样简单,但也有一点限制。

限制
1.只有一个Form是可见的,这是因为在实际情况中,浏览器里只能显示一个Form.
2.模式的Forms是不能使用的,然而,因为在浏览器中一次只能显示一个Form,所以实际上所
有的Form都是模式的。
3.所有的Form都必须是Owned By WebApplicaton.


使用方法

Form List
IntraWeb保留了一个Forms的列表做为用户Session的一部分,它就像是时装店里的新上架商品
一样,最近显示的Form将会被保留在最顶端,当一个Form被隐藏时或被释放时,这个列表用来
确定应该激活哪一个Form,如果没有明确的通过.Show方法来提出应该显示哪一个Form.
通常,Form List从来不会直接与用户进行交互,而是通过Call的方法来确定显示哪一个Form,
但是,在有的情况下,Form List必须与用户进行交互,在这些情况下,TIWApplication包含了
一系列的方法来实现与用户的交互,这在帮助文档里都有说明。

Showing Forms
显示一个Form通常的语句格式如下:

TFormType.Create(WebApplication).Show;

第一次看来,这有点让人迷惑,但是它是以下格式的略缩:

with TFormType.Create(WebApplication) do
begin
Show;
end;

除了它在这里是一个WebApplication这外,就像是通常的应用程序一样,不同的是,普通的应
用程序在调用了Call之后,Form是马上就显示,在IntraWeb中,当Call调用一个Form之后,只
是纯粹地指定了哪一个Form是在一个事件退出之后下一个活动的Form,也仅仅当一个事件被执
行之后Form才会显示。

Destorying Forms
一个普通的应用程序中,当一个Form不在需要的时候,它能通过使用.Free或.Destroy方法来
Destory掉,在IntraWeb应用程序中,有一点相似,但是,你不能直接调用.Free或.Destroy方
法,你必须调用一个.Release方法,.Release方法并没有真正地Destory这个Form,这个Form直
到退出了事件并且把控制权还给IntraWeb的时候才会真正地Destory.这是因为.Release是Form
本身在事件中调用的,尽管这并不是经常发生。
当Relase被调用的时候,就像一个普通的应用程序一样,当前活动的Form变成前一个被Destory
的Form,如果你不想用户回到上一个Form,你就必须调用.Show方法来激活另一个Form,可以在
.Release将程序控制权还给IntraWeb之前或之后调用.Show方法。当一个Form被释放后,所有对
这个Form List的参考都会被删除,如果在这些Form在Hidden或Release的时候没有调用.Show方
法,将改变Form的序列。

Hiding Froms
在普通的应用程序中可以不调用.Hide方法来Destory一个Form,同样的功能也可以在IntraWeb
中调.Hide方法来实现,.Hide方法可以在调用.Release方法时隐藏一个Form而不必Destroy它。
调用.Release时,.Hide删除了所有的关于对这个Form List的引用,但是并没有Destory它,正
因如此,如果你想在以后还想继续使用这个Form,你必须保留一个对这个Form的引用,换句话说,
也就是这个Form变成孤立的了。
 
多人接受答案了。
 
后退
顶部