fix: 收敛旧模块资源释放与诊断
This commit is contained in:
@@ -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
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user