fix: 收敛旧模块资源释放与诊断
This commit is contained in:
@@ -424,6 +424,7 @@ namespace Lskj.Control
|
||||
/// 自定义查询条件
|
||||
/// </summary>
|
||||
public MyControl SearchObj { get; private set; }
|
||||
private bool mModuleResourcesReleased;
|
||||
/// <summary>
|
||||
/// 左查询条件
|
||||
/// </summary>
|
||||
@@ -516,6 +517,17 @@ namespace Lskj.Control
|
||||
searchObj = new MyControl(ReplaceBmpField(this.SysModel.MenuSql), gcMain, LeftTreeViewEx, LeftGridEx, _leftGridSearchObj);//替换sql语句中的bmp字段
|
||||
searchObj.SpecialLeftTable = this.SpecialLeftTable;
|
||||
searchObj.Model = Model;
|
||||
if (!fixedQuery && Model.DataCaches != null)
|
||||
{
|
||||
searchObj.OtherParams = Model.OtherParams();
|
||||
DynamicModel searchModel = Model;
|
||||
DataTable searchControls = _queryTable;
|
||||
Model.DataCaches.AddTask(searchObj, "DynamicModel",
|
||||
new Task<DynamicModel>(() => searchModel));
|
||||
Model.DataCaches.AddTask(searchObj, "ControlsTable",
|
||||
new Task<DataTable>(() => searchControls));
|
||||
searchObj.GetSearchDataCaches(Model.DataCaches);
|
||||
}
|
||||
}
|
||||
this.SearchObj = searchObj;
|
||||
|
||||
@@ -2459,8 +2471,6 @@ namespace Lskj.Control
|
||||
|
||||
form.SubForm.Dispose();
|
||||
form = null;
|
||||
GC.Collect();
|
||||
GC.WaitForPendingFinalizers();
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
@@ -3680,6 +3690,102 @@ namespace Lskj.Control
|
||||
this.OperShortMode = true;
|
||||
}
|
||||
|
||||
internal void ReleaseResourcesForDispose()
|
||||
{
|
||||
if (mModuleResourcesReleased)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
mModuleResourcesReleased = true;
|
||||
PrintUtil.OnAfterPrint -= OnReportPrintAfter;
|
||||
|
||||
MyControl searchObj = SearchObj;
|
||||
SearchObj = null;
|
||||
if (searchObj != null)
|
||||
{
|
||||
searchObj.OnSearchBeforeCallBack -= OnSearchBeforeCallBack;
|
||||
searchObj.OnSearchAfterCallBack -= OnSearchAfterCallBack;
|
||||
searchObj.OnDataSourceBindCallBack -= OnMainSearchDataSourceBindCallBack;
|
||||
searchObj.Dispose();
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
if (gcMain != null)
|
||||
{
|
||||
if (gcMain.GridView != null)
|
||||
{
|
||||
gcMain.GridView.FocusedRowObjectChanged -= OnGridViewFocusedRowObjectChanged;
|
||||
gcMain.GridView.ShowingEditor -= OnGridViewShowingEditor;
|
||||
gcMain.GridView.DoubleClick -= OnGridViewDoubleClick;
|
||||
gcMain.GridView.MouseDown -= OnGridViewMouseDown;
|
||||
gcMain.GridView.MouseDown -= OnGridMouseDown;
|
||||
gcMain.GridView.MouseMove -= OnGridMouseMove;
|
||||
gcMain.GridView.MouseUp -= OnGridMouseUp;
|
||||
}
|
||||
if (gcMain.CustomGroupBandEx != null)
|
||||
{
|
||||
gcMain.CustomGroupBandEx.GridView.FocusedRowObjectChanged -= OnGridViewFocusedRowObjectChanged;
|
||||
gcMain.CustomGroupBandEx.GridView.ShowingEditor -= OnGridViewShowingEditor;
|
||||
}
|
||||
if (gcMain.ParentControl != null &&
|
||||
ReferenceEquals(gcMain.ParentControl, searchObj))
|
||||
{
|
||||
gcMain.ParentControl = null;
|
||||
}
|
||||
gcMain.Model = null;
|
||||
gcMain.SysModel = null;
|
||||
}
|
||||
}
|
||||
catch
|
||||
{
|
||||
// A partially disposed DevExpress view must not stop module cleanup.
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
if (Model != null && Model.DataCaches != null)
|
||||
{
|
||||
Model.DataCaches.Remove(this);
|
||||
}
|
||||
}
|
||||
catch
|
||||
{
|
||||
// Cache cleanup must not interrupt control disposal.
|
||||
}
|
||||
|
||||
OnSaveGridCallBack = null;
|
||||
AfterDeleteGridCallBack = null;
|
||||
RightGridCallBack = null;
|
||||
DetailRightGridCallBack = null;
|
||||
OnCloseCallback = null;
|
||||
AfterRefreshingCallBack = null;
|
||||
SaveEvent = null;
|
||||
OnExportCallBack = null;
|
||||
verifyDetailsTab = null;
|
||||
|
||||
if (m_dragRowShadow != null)
|
||||
{
|
||||
m_dragRowShadow.Dispose();
|
||||
m_dragRowShadow = null;
|
||||
}
|
||||
ButtonModeRightMenus.Clear();
|
||||
RightButtons.Clear();
|
||||
itemCommonList.Clear();
|
||||
LineStatus.Clear();
|
||||
_leftGridSearchObj = null;
|
||||
LeftTreeViewEx = null;
|
||||
LeftGridEx = null;
|
||||
SpecialLeftTable = null;
|
||||
ParentGridEx = null;
|
||||
ParentControlEx = null;
|
||||
ParentControlObj = null;
|
||||
TabObj = null;
|
||||
Model = null;
|
||||
SysModel = null;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 明细父表格点击后刷新明细按钮权限
|
||||
/// </summary>
|
||||
@@ -3962,25 +4068,6 @@ namespace Lskj.Control
|
||||
{
|
||||
return BaseModuleImpl.GetSchemesList(dynamicModel.ModuleId);//获取高级查询条件模版
|
||||
}));
|
||||
//InitializeQueryCondition
|
||||
Task<MyControl> searchObjTask = cachesDic.AddTask(this, "SearchObj", new Task<MyControl>(() =>
|
||||
{
|
||||
DataTable queryTable = customQueryFieldsTask.Result;
|
||||
bool fixedQuery = queryTable == null || queryTable.Rows.Count == 0;
|
||||
MyControl myControl = new MyControl(sysModel.MenuSql, gcMain, LeftTreeViewEx, LeftGridEx, _leftGridSearchObj)
|
||||
{
|
||||
SpecialLeftTable = this.SpecialLeftTable,
|
||||
Model = dynamicModel
|
||||
};
|
||||
if (!fixedQuery)
|
||||
{
|
||||
myControl.OtherParams = dynamicModel.OtherParams();
|
||||
cachesDic.AddTask(myControl, "DynamicModel", dynamicModelTask);
|
||||
cachesDic.AddTask(myControl, "ControlsTable", customQueryFieldsTask);
|
||||
myControl.GetSearchDataCaches(cachesDic);
|
||||
}
|
||||
return myControl;
|
||||
}));
|
||||
Task<ModuleModel> searchSysModelTask = cachesDic.AddTask(pl_top_search, "SysModel", new Task<ModuleModel>(() =>
|
||||
{
|
||||
return new ModuleModel(MainImpl.GetSystemdllTab(dynamicModel.ModuleCode));
|
||||
|
||||
Reference in New Issue
Block a user