在Delphi中的每个pas单元文件中的initialization
块的所起的作用,在C#中有类似的机制么?
块的所起的作用,在C#中有类似的机制么?
解决方案 »
- 我想控制并口的某个引脚的电平输出,怎么样做?
- TList的Delete方法的问题。
- 求助:Delphi用ADO连接SQL Server问题
- EAN13条形码问题。大虾!不买,也来瞧瞧
- delphi 调用C++动态链接库
- 怎么用delphi做类似股票的K线图?
- Delphi 中用 showmessage 怎么让对话框中的 OK 按钮变为中文呢?
- 请问:为什么客户端找不到在不同网段上的应用服务?
- delphi中怎样计算datetimepicker获取的天数????????
- 交友启示:对MTS/COM+感兴趣,熟悉Delphi的朋友,让咱们携起手来共同进步吧!
- 新人在线求助:关于Delphi多媒体组件的扩展开发
- 急急!!!!关于客户机服务器模式
C#中的类似实现initialization的方式,多谢!也请各位不吝赐教。
C# 我不是特别熟悉,也好久没用了,
但就我知道,应该是没有的才对,
如果需要,你可以在最外层的那个对象,建立初始化的东西
引:
下面是一个典型的应用程序的Delphi工程文件,我们注意到一开始就有一个对Application对象的Initialize方法的引用,我们的分析也就从这里开始:program Project1;uses
Forms,
Unit1 in 'Unit1.pas' {Form1};{$R *.res}begin
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.Run;
end.隐藏的窗口是由Application对象创建的,那么Application对象又从何而来呢?在Delphi的代码编辑窗口中按住Ctrl点击Application就会发现,Application对象是在Forms.pas单元中定义的几个全局对象之一。这还不够,我们想要知道的是Application对象是在什么地方创建的,因为必须成功创建了TApplication类的实例我们才能引用它。
想一下,有什么代码会在Application.Initialize之前执行呢?对了,是initialization代码段中的代码。认真调试过VCL源码就可以知道,VCL中很多单元都有initialization代码段,启动Delphi程序时,先是按照uses的顺序执行每个单元中initialization代码段的代码,完成所有的初始化动作之后才执行Application的Initialize方法以初始化Application,所以很显然,Application对象是在某个单元的initialization代码段中创建的。
以"TApplication.Create"为关键字在VCL源码目录中搜索一番,我们果然在Controls.pas单元中找到了创建Application对象的代码。在Controls.pas单元的initialization代码段,有一句对InitControls过程的调用,而InitControls的实现则如下所示:Unit Controls;
…
initialization
...
InitControls;procedure InitControls;
begin
...
Mouse := TMouse.Create;
Screen := TScreen.Create(nil);
Application := TApplication.Create(nil);
...
end;好,到这里我们的分析就完成了第一步,因为要解决非正常窗口的问题,我们必须要在Application对象初始化之前做一件事,因此了解应用程序的初始化过程就非常重要了。