Jquery中文网 www.jquerycn.cn
Jquery中文网 >  脚本编程  >  Asp.net  >  正文 Vs2005之简单日志工具的制作--6.启动

Vs2005之简单日志工具的制作--6.启动

发布时间:2017-10-22   编辑:www.jquerycn.cn
jquery中文网为您提供Vs2005之简单日志工具的制作--6.启动等资源,欢迎您收藏本站,我们将为您提供最新的Vs2005之简单日志工具的制作--6.启动资源

  下面说说系统的启动。
  说到启动,就又想起了.net另一个让人郁闷的地方:winform程序相比其他开发工具(比如delphi)产生的程序,启动速度太慢了。启动一个winform程序,可能过了好久系统才真正进入。在这个过程中,如果能将启动条理化,并反应出来,让人看到什么时候程序在做什么,也是一个不错的办法。
  打开MyLog3的解决方案,在MyLog3项目中可以找到一个窗口TfrmConver,它看起来像这个样子:

       
  
  这个界面希望它能够做两件事情:
  一是启动的时候,显示一些启动信息;二是可以通过“关于”命令来显示它,可以随时查看软件的一些相关信息。
  启动信息显示在label1中,它是通过下面这个函数来实现的:  



<span style="COLOR: #000000">        </span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000"> SetInfo(</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> step, </span><span style="COLOR: #0000ff">string</span><span style="COLOR: #000000"> infotext)
        </span><span id="_63_216_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">...</span><span id="_63_216_Open_Text"><span style="COLOR: #000000">{
            label1.Text </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> step.ToString() </span><span style="COLOR: #000000"> </span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">.</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000"> </span><span style="COLOR: #000000"> infotext;
            Application.DoEvents();
            System.Threading.Thread.Sleep(</span><span style="COLOR: #000000">30</span><span style="COLOR: #000000">);
        }</span></span>


  这个类的构造被定义成了私有的,因为每次使用这个界面时,某些初始化属性是一样的,因此将生成对象的代码封装在函数ShowCover中:  



<span style="COLOR: #000000">        </span><span style="COLOR: #0000ff">private</span><span style="COLOR: #000000"> TfrmCover()
        </span><span id="_36_81_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">...</span><span id="_36_81_Open_Text"><span style="COLOR: #000000">{
            InitializeComponent();
        }</span></span><span style="COLOR: #000000">

        </span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">static</span><span style="COLOR: #000000"> TfrmCover ShowCover(</span><span style="COLOR: #0000ff">bool</span><span style="COLOR: #000000"> showDialog)
        </span><span id="_151_453_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">...</span><span id="_151_453_Open_Text"><span style="COLOR: #000000">{
            TfrmCover form </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000"> TfrmCover();
            form.label1.Text </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">""</span><span style="COLOR: #000000">;
            form.TopMost </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">true</span><span style="COLOR: #000000">;

            form._isStart </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">!</span><span style="COLOR: #000000">showDialog;

            </span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000"> (showDialog)
                form.ShowDialog();
            </span><span style="COLOR: #0000ff">else</span><span style="COLOR: #000000">
                form.Show();

            </span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000"> form;
        }</span></span><span style="COLOR: #000000">
</span>

 

  .net中的Form.ShowDialog()和Form.Show()是两个比较有意思的函数。前者使调用的线程进入“阻塞”状态,只有在ShowDialog()的窗口关闭后,才能执行后面的代码;而后者则没有任何的影响。
  在MyLog3中,TfrmCover有两个要使用的地方,一是启动是主要用来显示启动信息,二是通过关于命令来显示。很显然,前一种状态不能使用ShowDialog()而应该使用Show(),后一种则最好使用ShowDialog()--这也可以说是一种习惯。
  因此,ShowCover中增加了一个参数,bool showDialog,通过它,便确定了生成的TfrmCover对象是使用哪种方式显示出来。
  form.TopMost = true这句代码是指将窗口显示为“最顶层窗口”。
  TfrmCover中还定义了一个bool型变量_isStart,它是用于控制窗口的自动关闭的--但它并不是这里要说的重点。

  有了启动显示信息的界面,便可以一步步地启动系统,启动的代码写在了每个winform应用程序都有的Program类的Main函数中:  



<span style="COLOR: #000000">        </span><span style="COLOR: #0000ff">static</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000"> Main(</span><span style="COLOR: #0000ff">string</span><span style="COLOR: #000000">[] args)
        </span><span id="_48_73_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">...</span><span id="_48_73_Open_Text"><span style="COLOR: #000000">{
            </span><span style="COLOR: #008000">//
</span><span style="COLOR: #000000">        }</span></span>

 

  在第4章文件类型注册时,向注册表中写入了一个Command项,它使得每当运行一个ml3文件时,便将这个ml3文件的完全路径作为命令行参数来启动MyLog3.exe。为了得到这个ml3文件的路径,需要给Main做一点小小的“手术”,如上面的代码所示,增加一个参数:  



<span style="COLOR: #0000ff">string</span><span style="COLOR: #000000">[] args
</span>

 

  这样,通过args这个字符串数组就可以得到传入程序的命令行参数了。

  Main函数代码的前两句是每个WinForm程序都有的,无需变动:  



<span style="COLOR: #000000">    Application.EnableVisualStyles();
    Application.SetCompatibleTextRenderingDefault(</span><span style="COLOR: #0000ff">false</span><span style="COLOR: #000000">);</span>

 

  然后我们要生成TfrmCover的对象,用于显示启动信息:  



<span style="COLOR: #000000">TfrmCover form </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> TfrmCover.ShowCover(</span><span style="COLOR: #0000ff">false</span><span style="COLOR: #000000">);</span>

 

  下面开始启动系统:

  1。通过调用类TSysRegeist中的函数,增加(或者更新)ml3文件与MyLog3.exe应用程序的关联。



<span style="COLOR: #000000">    form.SetInfo(</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">检查注册信息</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);
    TSysRegeist.AddRegeist();</span>

 

  2。检查命令行参数,这分为三种情况:
  第一种是没有命令行参数,应用程序退出;第二情况是有命令行参数,但其值等于"DelReg",这时需要通过TSysRegeist类来从系统中删除ml3文件类型;最后一种情况需要检查参数所指定的文件是否存在,不存在则退出,存在则继续下一步。  



<span style="COLOR: #000000">            form.SetInfo(</span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">检查命令行参数</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);
            </span><span id="_52_603_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">检查参数</span><span id="_52_603_Open_Text" style="DISPLAY: none"><span style="COLOR: #0000ff">#region</span><span style="COLOR: #000000"> 检查参数</span><span style="COLOR: #000000">
            </span><span style="COLOR: #0000ff">string</span><span style="COLOR: #000000"> filePath </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">null</span><span style="COLOR: #000000">;
            </span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000"> ((args </span><span style="COLOR: #000000">!=</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">null</span><span style="COLOR: #000000">) </span><span style="COLOR: #000000">&&</span><span style="COLOR: #000000"> (args.Length </span><span style="COLOR: #000000">></span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">))
            </span><span id="_166_216_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">...</span><span id="_166_216_Open_Text"><span style="COLOR: #000000">{
                filePath </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> args[</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">];
            }</span></span><span style="COLOR: #000000">

            </span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000"> (filePath </span><span style="COLOR: #000000">==</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">null</span><span style="COLOR: #000000">)
            </span><span id="_265_303_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">...</span><span id="_265_303_Open_Text"><span style="COLOR: #000000">{
                </span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">;
            }</span></span><span style="COLOR: #000000">
            </span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000"> (filePath </span><span style="COLOR: #000000">==</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">DelReg</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">)
            </span><span id="_355_478_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">...</span><span id="_355_478_Open_Text"><span style="COLOR: #000000">{
                form.SetInfo(</span><span style="COLOR: #000000">3</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">卸载注册信息</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);
                TSysRegeist.DelRegeist();
                </span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">;
            }</span></span><span style="COLOR: #000000">
            </span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000"> (</span><span style="COLOR: #000000">!</span><span style="COLOR: #000000">System.IO.File.Exists(filePath))
            </span><span id="_542_580_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">...</span><span id="_542_580_Open_Text"><span style="COLOR: #000000">{
                </span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">;
            }</span></span><span style="COLOR: #000000">
            </span><span style="COLOR: #0000ff">#endregion</span></span><span style="COLOR: #000000">
</span>

 

  3。如果程序没有退出,则执行第三步,检查数据结构:  



<span style="COLOR: #000000">    form.SetInfo(</span><span style="COLOR: #000000">3</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">检查数据结构</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);
    </span><span id="_35_109_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">检查数据</span><span id="_35_109_Open_Text" style="DISPLAY: none"><span style="COLOR: #0000ff">#region</span><span style="COLOR: #000000"> 检查数据</span><span style="COLOR: #000000">
     TSysData sysData </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000"> TSysData(filePath);
    </span><span style="COLOR: #0000ff">#endregion</span></span>

 

  4。生成主窗口:  



<span style="COLOR: #000000">    form.SetInfo(</span><span style="COLOR: #000000">4</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">初始化主窗口</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);
    TfrmMain mainForm </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000"> TfrmMain(sysData.DataSet, filePath);</span>

 

  5。初始化主窗口中的数据:  



<span style="COLOR: #000000">    form.SetInfo(</span><span style="COLOR: #000000">5</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">初始化数据</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);
    mainForm.Init();</span>


  在这里有一个建议,主窗口的数据初始化过程,尽量不要放到主窗口的Load事件中,而放到自定义的初始化函数。

  最后,释放掉信息提示窗口,并进入应用程序:  



<span style="COLOR: #000000">    form.Dispose();
    Application.Run(mainForm);</span>

 

  下一篇,日志类型管理类TStyle的实现。
  ie.2008-04-08。



您可能感兴趣的文章:
Vs2005之简单日志工具的制作--2.根据功能分析进行系统设计
mysql删除binlog日志及使用日志恢复数据的方法
Linux日志服务介绍和日志服务器配置
Linux管理日志系统详解
删除及设置linux日志笔记
学习mysql binlog日志清理
PHP错误日志的使用及汇总
MYSQL启用日志,查看日志,利用Mysqlbinlog工具恢复MySQL数据库
mysql优化之如何定位效率较低的SQL
利用Mysqlbinlog工具恢复MySQL数据库的例子

[关闭]