若系统的主程序设置不对,就是系统的启动窗体设置错了,很容易导致系统退出时无法从内存里干净干净的退出,甚至在编译开发时也会遇到一些不必要的问题,例如已经在内存里占用等,非要退出开发环境才可以重新编译调试的问题。
最近把系统的主程序重新进行了调整,反复测试确认已经修正了无法从内存里干净退出的问题,心里舒坦了很多了。
在配置文件中的设置的主程序、登录程序的设置参考。
<!--
登录窗体
-->
< add key = " LogOnAssembly " value = " DotNet.WinForm.LogOn " />
< add key = " LogOnForm " value = " FrmLogOn " />
< add key = " MainForm " value = " SDIMainForm " />
< add key = " LogOnAssembly " value = " DotNet.WinForm.LogOn " />
< add key = " LogOnForm " value = " FrmLogOn " />
< add key = " MainForm " value = " SDIMainForm " />
工程项目参考图如下
主程序中的代码如下
private
void
MainForm_Load(
object
sender, EventArgs e)
{
Form logOnForm = CacheManager.Instance.GetForm(BaseSystemInfo.LogOnAssembly, BaseSystemInfo.LogOnForm);
logOnForm.ShowDialog( this );
}
{
Form logOnForm = CacheManager.Instance.GetForm(BaseSystemInfo.LogOnAssembly, BaseSystemInfo.LogOnForm);
logOnForm.ShowDialog( this );
}
登录按钮调用主窗体的事件参考部分
if
(
!
BaseSystemInfo.LogOned)
{
Form mainForm = this .Owner;
((IBaseMainForm)mainForm).InitService();
((IBaseMainForm)mainForm).InitForm();
mainForm.Show();
}
{
Form mainForm = this .Owner;
((IBaseMainForm)mainForm).InitService();
((IBaseMainForm)mainForm).InitForm();
mainForm.Show();
}
下面是登录窗体的接口定义部分
//
------------------------------------------------------------
// All Rights Reserved , Copyright (C) 2010 , Jirisoft , Ltd.
// ------------------------------------------------------------
using System;
namespace DotNet.WinForm.Utilities
{
/// <summary>
/// IBaseMainForm
/// 主窗口的接口
///
/// 修改纪录
///
/// 2008.10.29 版本:1.1 JiRiGaLa 重新命名。
/// 2008.05.04 版本:1.0 JiRiGaLa 创建。
///
/// 版本:1.0
///
/// <author>
/// <name> JiRiGaLa </name>
/// <date> 2008.05.04 </date>
/// </author>
/// </summary>
public interface IBaseMainForm
{
/// <summary>
/// 初始化窗体
/// </summary>
void InitForm();
/// <summary>
/// 初始化服务
/// </summary>
void InitService();
/// <summary>
/// 检查菜单
/// </summary>
void CheckMenu();
}
}
// All Rights Reserved , Copyright (C) 2010 , Jirisoft , Ltd.
// ------------------------------------------------------------
using System;
namespace DotNet.WinForm.Utilities
{
/// <summary>
/// IBaseMainForm
/// 主窗口的接口
///
/// 修改纪录
///
/// 2008.10.29 版本:1.1 JiRiGaLa 重新命名。
/// 2008.05.04 版本:1.0 JiRiGaLa 创建。
///
/// 版本:1.0
///
/// <author>
/// <name> JiRiGaLa </name>
/// <date> 2008.05.04 </date>
/// </author>
/// </summary>
public interface IBaseMainForm
{
/// <summary>
/// 初始化窗体
/// </summary>
void InitForm();
/// <summary>
/// 初始化服务
/// </summary>
void InitService();
/// <summary>
/// 检查菜单
/// </summary>
void CheckMenu();
}
}