fix: 收敛旧模块资源释放与诊断

This commit is contained in:
2026-08-15 10:13:08 +08:00
parent 222ae3c08a
commit c49015d390
60 changed files with 4218 additions and 409 deletions
+54 -6
View File
@@ -37,6 +37,8 @@ namespace Lskj.Control
/// </summary>
public partial class ReplacementDetailEx : UserControl
{
private bool mResourcesReleased;
private bool mDetailPageCachesPrepared;
/// <summary>
/// 系统模块实体对象
/// </summary>
@@ -102,6 +104,39 @@ namespace Lskj.Control
{
InitializeComponent();
}
internal void ReleaseResourcesForDispose()
{
if (mResourcesReleased)
{
return;
}
mResourcesReleased = true;
if (ModuleGridObj != null)
{
ModuleGridObj.ReleaseResourcesForDispose();
}
try
{
if (Model != null && Model.DataCaches != null)
{
Model.DataCaches.Remove(this);
}
}
catch
{
// Cache cleanup must not interrupt control disposal.
}
if (GridDetailList != null)
{
GridDetailList.Clear();
}
_leftGridSearchObj = null;
Model = null;
SysModel = null;
}
/// <summary>
/// <para>说明:初始化控件</para>
/// <para>创建人:龚宇超</para>
@@ -128,6 +163,7 @@ namespace Lskj.Control
this.ModuleGridObj.InitializeControl(sysModel, dyncModel);
RefreshDetail = this.SysModel.RefreshDetail == "0";
Console.WriteLine(DateTime.Now);
PrepareDetailPageCaches(dyncModel.DataCaches);
// 初始化底部多标签
this.InitializePages();
Console.WriteLine(DateTime.Now);
@@ -162,15 +198,27 @@ namespace Lskj.Control
//获取通用数据
Task<ModuleModel> sysModelTask = cachesDic.GetTask<ModuleModel>(this, "SysModel");
Task<DynamicModel> dynamicModelTask = cachesDic.GetTask<DynamicModel>(this, "DynamicModel");
Task<List<GridDetailModel>> detailsTask = cachesDic.GetTask<List<GridDetailModel>>(this, "Details");
cachesDic.AddTask(ModuleGridObj, "DynamicModel", dynamicModelTask);
cachesDic.AddTask(ModuleGridObj, "SysModel", sysModelTask);
cachesDic.AddTask(ModuleGridObj, "Details", detailsTask);
cachesDic.AddTask(tcButtom, "DynamicModel", dynamicModelTask);
cachesDic.AddTask(tcButtom, "Details", detailsTask);
//初始化顶部表格
ModuleGridObj.GetDataCaches(cachesDic);
// 初始化底部多标签
}
private void PrepareDetailPageCaches(
Dictionary<object, Hashtable> cachesDic)
{
if (mDetailPageCachesPrepared || cachesDic == null)
{
return;
}
mDetailPageCachesPrepared = true;
Task<DynamicModel> dynamicModelTask =
cachesDic.GetTask<DynamicModel>(this, "DynamicModel");
Task<List<GridDetailModel>> detailsTask =
cachesDic.GetTask<List<GridDetailModel>>(this, "Details");
cachesDic.AddTask(tcButtom, "DynamicModel", dynamicModelTask);
cachesDic.AddTask(tcButtom, "Details", detailsTask);
tcButtom.GetDataCaches(cachesDic);
}
@@ -650,4 +698,4 @@ namespace Lskj.Control
}
}
}
}